Основы Docker CLI
Тема дорожной карты · Docker & Containers
Docker CLI — это основной инструмент для взаимодействия с демоном Docker. С его помощью можно выполнять различные действия: запускать контейнеры (docker run), получать информацию о запущенных контейнерах (docker ps), управлять образами (docker images), просматривать логи (docker logs), выполнять команды внутри работающих контейнеров (docker exec), удалять контейнеры (docker rm) и образы (docker rmi), а также управлять загрузкой (docker pull) и отправкой образов (docker push). Кроме того, CLI позволяет строить новые образы (docker build).
Понимание разницы между командами, работающими с образами и контейнерами, является ключевым для эффективного использования Docker. Команды, которые работают с образами, такие как docker images, docker image ls и docker image prune, позволяют вам управлять и очищать список доступных образов. С другой стороны, команды, такие как docker ps, docker container ls и docker container prune, предназначены для работы с запущенными и остановленными контейнерами.
Для автоматизации процессов и создания скриптов можно использовать флаг --format с Go-шаблонами. Команда docker inspect возвращает полную информацию о контейнере или образе в формате JSON, что позволяет глубже исследовать внутренности контейнеров и образов. Команда docker system df предоставляет информацию о том, какие контейнеры и образы занимают место на диске, что помогает в управлении ресурсами.
Для управления удалёнными демонами Docker можно использовать переменную окружения DOCKER_HOST или контексты (docker context use), которые позволяют направлять команды Docker CLI на удалённые машины.
Как это работает
Docker CLI предоставляет простой и мощный интерфейс для взаимодействия с демоном Docker. Основные команды включают:
pull/push: перемещение образов между registry.run: создание и запуск контейнера из образа.exec: выполнение команды внутри живого контейнера.ps: отображение запущенных контейнеров (ps -a— включая остановленные).logs: стриминг stdout/stderr.inspect: получение полного JSON по любому ресурсу.system df: отображение использования диска.
Флаги команд Docker CLI могут быть комбинированы для выполнения сложных операций. Например, команда docker run --rm -it --name myapp -p 8080:80 -v $PWD:/app nginx запускает контейнер nginx, который будет доступен по порту 8080, использует текущий каталог в качестве рабочего каталога внутри контейнера и удаляет контейнер после завершения работы.
Когда применять
CLI Docker особенно полезна для быстрых и временных задач, таких как тестирование, отладка и выполнение разовых команд. Однако для более стабильных и повторяющихся задач, таких как запуск сервисов, разработка в среде или шаги CI/CD, рекомендуется использовать docker compose. Конфигурация в YAML-файле позволяет легко ревьюить и версионировать конфигурации, что делает её более удобной по сравнению со стеной флагов в CLI-команде.
Для отладки сбойного контейнера до пересборки можно использовать команду docker exec -it container sh, которая позволяет запустить интерактивную оболочку внутри контейнера для проведения отладки.
Типичные ошибки
При работе с Docker CLI часто возникают типичные ошибки:
- Остановленные контейнеры могут оставаться навечно, что ведёт к съедению дискового пространства. Для предотвращения этого можно использовать флаг
--rmпри запуске контейнера. - Использование флага
-dдля запуска контейнера в фоновом режиме может привести к ситуации, когда вы забудете, как подключиться к контейнеру. Для решения этой проблемы можно использовать командыdocker logs -fилиdocker attach. - Неправильное использование команд
docker run, что может привести к созданию нового контейнера вместо обновления существующего. - Путаница между тегом образа и именем контейнера.
Для предотвращения этих ошибок рекомендуется регулярно вызывать команду docker system df, чтобы отслеживать, какие контейнеры и образы занимают место на диске.