10 команд Docker, которые должен знать каждый разработчик

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

Что такое образы и контейнеры Docker

Docker — отличный инструмент для создания микросервисов, который позволяет создавать облачные приложения и системы. Чтобы выжать из него максимум через терминал, вам пригодятся 10 команд, перечисленных ниже.

Контейнер запускается путём запуска образа. Образ — исполняемый пакет, который содержит всё необходимое для запуска приложения: код, среду выполнения, библиотеки, переменные среды и конфигурационные файлы.Контейнер создаётся из образа. Это то, чем становится образ во время исполнения (иными словами, образом с состоянием или пользовательским процессом). Вы можете просмотреть список запущенных контейнеров с помощью команды docker ps, прямо как в Linux.

Docker Concepts

10 основных команд Docker

1. docker ps — список контейнеров

Показывает список запущенных контейнеров. Некоторые из полезных флагов:

  • -a / --all — список всех контейнеров (по умолчанию показывает только запущенные)
  • -q / --quiet — перечислить только id контейнеров (полезно, когда вам нужны все контейнеры)

2. docker pull — скачивание образов

Большинство образов создаётся на основе базового образа из Docker Hub. Docker Hub содержит множество готовых образов, которые можно использовать вместо того, чтобы создавать и настраивать свой собственный. Чтобы скачать определённый образ или набор образов (репозиторий), используйте команду docker pull.

3. docker build — сборка образа

Эта команда собирает образ Docker из Dockerfile и «контекста». Контекст сборки — это набор файлов, расположенных по определённому пути или URL. Используйте флаг -t, чтобы задать имя образу. Например, команда docker build -t my_container . соберёт образ, используя текущую директорию, на что указывает точка в конце.

4. docker run — запуск контейнера

Запускает контейнер на основе указанного образа. Эту команду можно дополнять другими, например, docker run my_image -it bash запустит контейнер, а затем запустит в нём bash.

5. docker logs — просмотр логов

Эта команда используется для просмотра логов указанного контейнера. Можно использовать флаг --follow, чтобы следить за логами работающей программы: docker logs --follow my_container.

6. docker volume ls — тома

Показывает список томов, которые являются предпочитаемым механизмом для сохранения данных, генерируемых и используемых контейнерами Docker.

7. docker rm — удаление контейнеров

Удаляет один и более контейнеров, например, docker rm my_container.

8. docker rmi — удаление образов

Удаляет один и более образов, например, docker rmi my_image.

9. docker stop — остановка контейнеров

Останавливает один и более контейнеров. Команда docker stop my_container остановит один контейнер, а docker stop $(docker ps -a -q) — все запущенные. Более грубый способ — использовать docker kill my_container, который не пытается сначала аккуратно завершить процесс.

Комбинации команд для очистки

Можно комбинировать эти команды. Например, для очистки всех контейнеров и образов:

  1. Останавливаем все запущенные контейнеры — docker kill $(docker ps -q)
  2. Удаляем все остановленные контейнеры — docker rm $(docker ps -a -q)
  3. Удаляем все образы — docker rmi $(docker images -q)

Существует гораздо больше команд для Docker, о которых можно почитать в документации. Пробуйте новые примеры, комбинируйте их, и скоро это войдёт в привычку.

Смотрите также: Как начать использовать Docker в своих проектах

Часто задаваемые вопросы

Чем отличается docker stop от docker kill?

docker stop отправляет сигнал SIGTERM и даёт процессу время на корректное завершение (graceful shutdown). docker kill отправляет SIGKILL и принудительно завершает процесс без ожидания. Используйте stop в продакшене, kill — когда контейнер завис.

Как удалить все неиспользуемые ресурсы Docker?

Команда docker system prune удаляет все остановленные контейнеры, неиспользуемые сети, образы без тегов и кэш сборки. Добавьте флаг -a, чтобы удалить ещё и образы, не связанные ни с одним контейнером.

Нужно ли учить все команды Docker?

Нет, достаточно освоить 10–15 базовых команд, перечисленных в этой статье. Остальные можно находить по мере необходимости в официальной документации или через docker --help.