Основные понятия и команды Docker

Основные понятия и команды Docker

Наши соц. сети: instagram, fb, tg

Что такое Docker?

Docker - это инструмент, который используется для создания, развертывания и запуска приложений через контейнеры. В контейнере находятся все библиотеки и зависимости, необходимые для запуска приложения, упакованные в единый пакет для развертывания. Основная цель контейнеризации приложения - изолировать его от других приложений, работающих в той же системе. Такой подход гарантирует, что приложения не мешают работе друг друга, и значительно упрощает их обслуживание. Хотя контейнеры, работающие в одной системе, изолированы друг от друга при выполнении, они используют одно и то же ядро ​​ОС. По-этому контейнеры более легкие по сравнению с альтернативным выбором для изоляции выполнения приложений - виртуальными машинами. Контейнерное приложение, работающее в вашей Windows, гарантированно будет работать без проблем на компьютере другого пользователя с Windows, несмотря на изменение среды. Хотя контейнеры использовались задолго до Docker, появление Docker сделало использование контейнеров популярным в сообществе разработчиков.

Преимуществ использования Docker:

Оптимизация: на одном хосте может размещаться большое количество приложений, поскольку контейнеры обычно имеют размер в несколько мегабайт и занимают очень мало места.

Надежность: на контейнере не установлена ​​операционная система. Таким образом, он потребляет очень мало памяти по сравнению с виртуальной машиной (на которой должна быть установлена ​​и запущена полная операционная система). Это также сокращает время загрузки до нескольких секунд.

Снижает затраты: Docker не требователен к оборудованию.

Основные понятия Docker

Слой - набор файлов или команд только для чтения, настраивающих систему под контейнер. Слои строятся друг над другом, и каждый из них представляет собой изменение файловой системы.

Образ - неизменяемый слой, образующий основу контейнера.

Контейнер - экземпляр образа, который может быть запущен как независимое приложение. Контейнер имеет также изменяемый слой, который находится поверх образа и отделен от нижележащих слоев.

Реестр - система хранения и доставки контента, используемая для распространения образов Docker.

Репозиторий - набор связанных образов Docker. Это могут быть разные версии одного и того же приложения.

Основные команды Docker

docker create [image]

создать новый контейнер из определенного образа

docker pull [image]

скачать образ из репозитория Docker Hub

docker push [username/image]

отправить образ в репозиторий Docker Hub

docker search [term]

поиск в репозитории Docker Hub

docker tag [source] [target] 

создать псевдоним (тег) который ссылается на исходный образ

Управление контейнерами

docker start [container]

запуск определенного контейнера

docker restart

перезапуск всех запущенных контейнеров

docker stop [container]

остановить определенный контейнер

docker exec -ti [container] [command]

запустить команду оболочки внутри определенного контейнера

docker run -ti — image [image] [container] [command]

создать и запустить контейнер, а затем выполнить команду внутри него

docker run -ti — rm — image [image] [container] [command]

создать и запустить контейнер одновременно, запустить внутри него команду и удалить контейнер после выполнения команды

docker pause [container]

приостановить все процессы, запущенные в определенном контейнере

Инструменты Docker:

docker history [image]

отображение истории определенного образа

docker images

список всех образов, которые в настоящее время хранятся в системе

docker inspect [object]

отображение низкоуровневой информации о конкретном объекте Docker

docker ps

список всех запущенных контейнеров

docker version

отображение версии Docker, которая в настоящее время установлена в системе

Очистка:

docker kill [container]

резко остановить определенный контейнер (в отличие от docker kill, docker stop имеет тайм-аут, прежде чем остановить процесс, 10 секунд по умолчанию)

docker kill $(docker ps -q)

остановить все запущенные контейнеры

docker rm [container]

удалить определенный контейнер, который в данный момент не запущен

docker rm $(docker ps -a -q)

удалить все контейнеры, которые в данный момент не запущены

Парочка полезных советов

Старайтесь, чтобы ваши образы были как можно меньше. Это упростит их передачу и ускорит загрузку при запуске нового контейнера. Не включайте библиотеки и зависимости, если они не являются абсолютным требованием для запуска приложения.

Если ваше приложение должно быть масштабируемым, рассмотрите возможность использования kubernetes, инструмента для управления кластером узлов как единой виртуальной системой.

Приятного кодинга!