
Введение в Docker
Прежде чем перейти к командам, давайте вкратце разберемся, что такое Docker и некоторые ключевые понятия.
Docker – это платформа с открытым исходным кодом, которая позволяет разработчикам создавать, развертывать и запускать приложения внутри контейнеров. Контейнеры – это легкие, автономные и исполняемые пакеты, которые содержат все необходимое для запуска приложения, включая код, время выполнения, системные инструменты, библиотеки и настройки.
Вот некоторые ключевые понятия Docker:
- Образ Docker: Шаблон, доступный только для чтения, который содержит инструкции по созданию контейнера Docker. Это как чертеж для вашего приложения.
- Контейнер Docker: Запускаемый экземпляр образа Docker. Это изолированная и безопасная среда, в которой выполняется ваше приложение.
- Docker Hub: Облачный реестр, в котором можно найти существующие образы Docker или разместить свои собственные.
- Dockerfile: Текстовый файл, содержащий инструкции по сборке образа Docker.
Теперь перейдем к рассмотрению основных команд Docker.
Установка Docker
Прежде чем начать использовать команды Docker, вам нужно установить Docker на свою машину. Процесс установки зависит от вашей операционной системы. Инструкции по установке для конкретной ОС можно найти на официальном сайте Docker: https://docs.docker.com/get-docker/
После установки Docker вы можете проверить установку, выполнив следующую команду в терминале:
$ docker --version
Эта команда должна отобразить версию Docker, установленную на вашей машине.
Основные команды Docker
1. Образы Docker
Образы Docker – это строительные блоки контейнеров. Здесь приведены некоторые важные команды для работы с образами Docker:
Список образов Docker
Чтобы перечислить все образы Docker на вашей машине, выполните команду:
$ docker images
Эта команда выведет список всех образов Docker на вашей машине с указанием их репозитория, тега, идентификатора образа, даты создания и размера.
Извлечение образа Docker
Чтобы загрузить (извлечь) образ Docker из реестра (например, Docker Hub), выполните команду:
$ docker pull [image_name]:[tag]
Замените [image_name]
на название изображения, которое вы хотите извлечь, и [tag]
с указанием конкретной версии или тега изображения (например, latest
, 16.04
, и т. д.). Если вы не укажете тег, Docker автоматически извлечет тег latest
тег.
Например, чтобы извлечь последнюю версию nginx
образа, выполните команду:
$ docker pull nginx
Удаление образа Docker
Чтобы удалить образ Docker с вашей машины, выполните команду:
$ docker rmi [image_id]
Заменить [image_id]
на идентификатор изображения, которое вы хотите удалить. Идентификатор изображения можно узнать, выполнив команду docker images
.
Если изображение имеет несколько тегов, перед удалением изображения необходимо удалить все связанные с ним теги. Это можно сделать, выполнив команду:
$ docker rmi [image_id] [image_id] ...
Заменить [image_id]
идентификаторами всех тегов, которые вы хотите удалить.
В качестве альтернативы можно использовать функцию --force
флаг, чтобы удалить образ, даже если он используется запущенным контейнером:
$ docker rmi --force [image_id]
2. Контейнеры Docker
Контейнеры Docker – это запущенные экземпляры образов Docker. Здесь приведены некоторые необходимые команды для работы с контейнерами Docker:
Список контейнеров Docker
Чтобы перечислить все запущенные контейнеры Docker на вашей машине, выполните команду:
$ docker ps
Если вы хотите получить список всех контейнеров (запущенных и остановленных), используйте команду -a
флаг:
$ docker ps -a
Эта команда отобразит различную информацию о контейнерах, такую как их идентификаторы, имена, образы, время создания и статус.
Запуск контейнера Docker
Чтобы запустить контейнер Docker из образа, воспользуйтесь командой run
команду:
$ docker run [options] [image_name]:[tag] [command]
Заменить [options]
с любыми дополнительными параметрами, которые вы хотите передать контейнеру (например, -d
для работы в отсоединенном режиме, -p
для сопоставления портов, -v
для монтирования томов и т.д.), [image_name]
с именем образа, который вы хотите запустить, [tag]
с конкретным тегом изображения (при желании), и [command]
с командой, которую вы хотите запустить внутри контейнера (если необходимо).
Например, чтобы запустить команду nginx
образ и сопоставить порт контейнера 80
на ваш локальный порт 8080
, запустите:
$ docker run -d -p 8080:80 nginx
Эта команда запустит программу nginx
контейнер в отсоединенном режиме (-d
) и отобразить порт 80
контейнера на порт 8080
на вашей локальной машине.
Запуск/остановка контейнера Docker
Чтобы запустить остановленный контейнер Docker, выполните команду:
$ docker start [container_id]
Заменить [container_id]
идентификатором или именем контейнера, который нужно запустить.
Чтобы остановить запущенный контейнер Docker, выполните команду:
$ docker stop [container_id]
Заменить [container_id]
идентификатором или именем контейнера, который нужно остановить.
Удаление контейнера Docker
Чтобы удалить остановленный контейнер Docker, выполните команду:
$ docker rm [container_id]
Заменить [container_id]
идентификатором или именем контейнера, который нужно удалить.
Если контейнер запущен, то перед удалением его нужно сначала остановить. В качестве альтернативы можно использовать функцию --force
флаг для удаления запущенного контейнера:
$ docker rm --force [container_id]
Выполнение команд в запущенном контейнере
Чтобы выполнить команду внутри запущенного контейнера Docker, используйте команду exec
команду:
$ docker exec [options] [container_id] [command]
Заменить [options]
с любыми дополнительными параметрами, которые вы хотите передать (например, -it
для интерактивного режима), [container_id]
с идентификатором или именем запущенного контейнера, и [command]
команда, которую нужно выполнить внутри контейнера.
Например, чтобы открыть оболочку bash внутри запущенного контейнера, выполните:
$ docker exec -it [container_id] /bin/bash
3. Сети Docker
Контейнеры Docker могут взаимодействовать друг с другом и с хост-машиной с помощью сетей Docker. Вот несколько основных команд для работы с сетями Docker:
Список сетей Docker
Чтобы перечислить все сети Docker на вашей машине, выполните команду:
$ docker network ls
Эта команда выведет список всех сетей Docker с указанием их имен, драйверов и области видимости.
Создание сети Docker
Чтобы создать новую сеть Docker, выполните команду:
$ docker network create [options] [network_name]
Заменить [options]
с любыми дополнительными параметрами, которые вы хотите передать (например, --driver
для указания сетевого драйвера), и [network_name]
с именем, которое вы хотите дать новой сети.
Например, чтобы создать новую сеть моста с именем my-network
, выполните команду:
$ docker network create my-network
Подключение контейнера к сети
Чтобы подключить запущенный контейнер к сети Docker, выполните команду:
$ docker network connect [network_name] [container_id]
Заменить [network_name]
на имя сети, к которой вы хотите подключить контейнер, и [container_id]
идентификатором или именем запущенного контейнера.
Отключение контейнера от сети
Чтобы отключить контейнер от сети Docker, выполните команду:
$ docker network disconnect [network_name] [container_id]
Заменить [network_name]
с именем сети, от которой вы хотите отключить контейнер, и [container_id]
идентификатором или именем запущенного контейнера.
4. Тома Docker
Тома Docker используются для сохранения данных и обмена ими между хост-машиной и контейнерами или между несколькими контейнерами. Вот несколько основных команд для работы с томами Docker:
Список томов Docker
Чтобы перечислить все тома Docker на вашей машине, выполните команду:
$ docker volume ls
Эта команда выведет список всех томов Docker, а также их имена и драйверы.
Создание тома Docker
Чтобы создать новый том Docker, выполните команду:
$ docker volume create [volume_name]
Заменить [volume_name]
именем, которое вы хотите присвоить новому тому.
Монтирование тома в контейнер
Чтобы смонтировать том в контейнер Docker, используйте команду -v
или --volume
флаг при запуске контейнера:
$ docker run -v [volume_name]:[container_path] [image_name]
Заменить [volume_name]
именем или путем тома, который нужно смонтировать, [container_path]
путь внутри контейнера, куда нужно смонтировать том, и [image_name]
имя образа, который вы хотите запустить.
Например, чтобы смонтировать том с именем app-data
в /app/data
каталог внутри контейнера, в котором запущен my-app
образ, запустите:
$ docker run -v app-data:/app/data my-app
Удаление тома Docker
Чтобы удалить том Docker, выполните команду:
$ docker volume rm [volume_name]
Заменить [volume_name]
именем тома, который нужно удалить.
Если том в данный момент используется запущенным контейнером, перед удалением тома необходимо сначала остановить и удалить контейнер.
5. Docker Compose
Docker Compose – это инструмент для определения и запуска многоконтейнерных приложений Docker. Он использует YAML-файл для определения служб, сетей и томов, необходимых для вашего приложения. Вот несколько основных команд для работы с Docker Compose:
Запуск приложения Docker Compose
Чтобы запустить приложение Docker Compose, перейдите в каталог, содержащий файл docker-compose.yml
файл и запустите его:
$ docker-compose up
Эта команда запустит все службы, определенные в файле docker-compose.yml
файле. Если вы хотите запустить контейнеры в фоновом режиме, используйте команду -d
флаг:
$ docker-compose up -d
Остановка приложения Docker Compose
Чтобы остановить работающее приложение Docker Compose, выполните команду:
$ docker-compose down
Эта команда остановит и удалит все контейнеры, сети и тома, связанные с приложением.
Список контейнеров Docker Compose
Чтобы перечислить все контейнеры, связанные с приложением Docker Compose, выполните команду:
$ docker-compose ps
Эта команда выведет список всех контейнеров с их именами, командами и статусом.
Пересборка контейнеров Docker Compose
Если вы внесли изменения в код или конфигурацию приложения, вам нужно пересобрать контейнеры. Для этого выполните команду:
$ docker-compose up --build
Эта команда перестроит контейнеры на основе обновленного Dockerfile и docker-compose.yml
файл.
6. Docker Hub и частные реестры
Docker Hub – это облачная служба реестра, где можно находить образы Docker и обмениваться ими. Вы также можете создать свой собственный частный реестр для хранения и распространения собственных образов. Вот несколько основных команд для работы с Docker Hub и частными реестрами:
Войдите в Docker Hub
Чтобы войти в свою учетную запись Docker Hub, выполните команду:
$ docker login
Эта команда предложит вам ввести имя пользователя и пароль Docker Hub.
Отправка образа в Docker Hub
Чтобы отправить образ Docker в репозиторий Docker Hub, сначала нужно пометить образ своим именем пользователя Docker Hub:
$ docker tag [image_id] [username]/[image_name]:[tag]
Замените [image_id]
идентификатором изображения, которое вы хотите нажать, [username]
с именем пользователя Docker Hub, [image_name]
имя, которое вы хотите дать образу, и [tag]
с нужным тегом (например, latest
, v1.0
, и т.д.).
После того как образ промаркирован, вы можете отправить его в Docker Hub:
$ docker push [username]/[image_name]:[tag]
Извлечение образа из Docker Hub
Чтобы извлечь образ из Docker Hub, выполните команду:
$ docker pull [username]/[image_name]:[tag]
Заменить [username]
на имя пользователя Docker Hub владельца образа, [image_name]
с именем образа, и [tag]
с нужным тегом.
Вход в личный реестр
Чтобы войти в частный реестр Docker, выполните команду:
$ docker login [registry_url]
Заменить [registry_url]
на URL-адрес вашего личного реестра. Эта команда предложит вам ввести учетные данные реестра (имя пользователя и пароль).
Передача изображения в личный реестр
Чтобы отправить образ Docker в частный реестр, сначала нужно пометить образ URL-адресом реестра:
$ docker tag [image_id] [registry_url]/[image_name]:[tag]
Заменить [image_id]
идентификатором изображения, которое вы хотите нажать, [registry_url]
с URL-адресом вашего личного реестра, [image_name]
с именем, которое вы хотите дать изображению, и [tag]
нужный тег.
После того как изображение помечено, его можно поместить в личный реестр:
$ docker push [registry_url]/[image_name]:[tag]
Извлечение изображения из частного реестра
Чтобы извлечь образ из частного реестра, выполните команду:
$ docker pull [registry_url]/[image_name]:[tag]
Заменить [registry_url]
на URL-адрес вашего личного реестра, [image_name]
с именем изображения, и [tag]
с нужным тегом.
Заключение
В этом подробном руководстве мы рассмотрели основные команды Docker, которые должен знать каждый новичок. От работы с образами и контейнерами Docker до управления сетями, томами и реестрами – теперь у вас есть базовые знания, чтобы начать эффективно использовать Docker.
Помните, что Docker – это мощный инструмент, и по мере накопления опыта вы сможете изучить множество дополнительных команд и функций. Практикуйтесь, экспериментируйте и не стесняйтесь обращаться к этому руководству, когда вам понадобится дополнительная информация.