Шпаргалка по Docker

«Некоторые часто используемые параметры команд Docker»

Содержимое страницы

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

docker logo

Это руководство является частью Инструменты разработчика: Полное руководство по современным рабочим процессам разработки.

Установка

Полное руководство по установке Docker на Ubuntu — с сравнением официального APT-репозитория, пакета docker.io, Snap, режима без прав root (rootless) и настройки плагина Compose — см. в статье Установка Docker на Ubuntu.

После установки добавьте своего пользователя в группу docker, если вам нужно запускать команды без sudo:

sudo usermod -aG docker $USER
newgrp docker
docker run hello-world

В руководстве по установке также рассматриваются компромиссы безопасности при членстве в группе docker и альтернативы с rootless-режимом.

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

Версия и информация о системе

docker version          # Отображает версии CLI и демона Docker
docker system info      # Выводит информацию об окружении Docker
docker help             # Просмотр справки
docker <command> --help # Просмотр справки для конкретной команды

Вход и выход из системы

docker login            # Вход в Docker Hub
docker logout           # Выход из Docker Hub

Управление образами

Список образов

docker images           # Список всех образов
docker images -a        # Список всех образов, включая промежуточные

Загрузка образов

docker pull <image-name:version> # Загрузка образа из Docker Hub

Сборка образов

docker build -t <image-name> . # Сборка образа из Dockerfile в текущей директории
docker build -f <Dockerfile-path> -t <image-name> . # Сборка образа из указанного Dockerfile
docker build --build-arg foo=bar . # Сборка образа с аргументами сборки
docker build --pull . # Загрузка обновленных версий образов, указанных в инструкциях FROM
docker build --quiet . # Сборка образа без вывода в консоль

Маркировка и отправка образов

docker tag <local-image-name> <username>/<preferred-image-name>
docker push <username>/<preferred-image-name>

Удаление образов

docker rmi <image-name>        # Удаление конкретного образа
docker image prune             # Удаление неиспользуемых образов
docker image prune -a          # Удаление всех неиспользуемых образов

Удаление «висящих» (dangling) образов

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

Удаление тега образа

docker rmi repository/image-name:tag

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

Запуск контейнеров

docker run -itd --name <container-name> <image-name> # Запуск контейнера в отсоединенном режиме
docker run -it -p <host-port>:<docker-port> <image-name> # Запуск контейнера с маппингом портов
docker run -it --name <container-name> <image-name> # Интерактивный запуск контейнера

Список контейнеров

docker ps                  # Список запущенных контейнеров
docker ps -a               # Список всех контейнеров
docker ps -s               # Список запущенных контейнеров с использованием CPU и памяти

Запуск, остановка и перезапуск контейнеров

docker start <container-name>   # Запуск остановленного контейнера
docker stop <container-name>    # Остановка запущенного контейнера
docker restart <container-name> # Перезапуск контейнера

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

docker rm <container-name>      # Удаление остановленного контейнера
docker rm -f <container-name>   # Принудительное удаление контейнера
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) # Удаление всех контейнеров

удаление всех остановленных контейнеров

docker container prune

Подключение к контейнерам

docker attach <container-name>  # Подключение к запущенному контейнеру
docker exec -it <container-name> bash # Интерактивное выполнение команды в запущенном контейнере

Инспекция контейнеров

docker inspect <container-name> # Инспекция контейнера
docker logs <container-name>    # Просмотр логов контейнера
docker port <container-name>    # Показать маппинг портов контейнера

Управление сетями

docker network ls            # Список всех сетей
docker network create <network-name> # Создание новой сети
docker network rm <network-name>    # Удаление сети

Управление томами (Volume)

docker volume ls             # Список всех томов
docker volume create <volume-name> # Создание нового тома
docker volume rm <volume-name>    # Удаление тома
docker run -v <host-path>:<container-path> <image-name> # Подключение тома

Docker Compose

Для стеков с несколькими контейнерами и повседневных команд Compose см. Шпаргалку по Docker Compose. Если проект Compose должен запускаться при загрузке и выживать после перезагрузки Linux-сервера, см. статью Запуск Docker Compose как службы Linux через systemd, где рассматриваются юнит-файлы и эксплуатационные практики.

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

docker-compose up           # Запуск сервисов, определенных в docker-compose.yml
docker-compose up -d        # Запуск сервисов в отсоединенном режиме
docker-compose down         # Остановка и удаление сервисов
docker-compose ps           # Список запущенных сервисов
docker-compose logs         # Просмотр логов сервисов
docker-compose start        # Запуск сервисов
docker-compose stop         # Остановка сервисов
docker-compose pause        # Приостановка сервисов
docker-compose unpause      # Возобновление работы сервисов

Команды Dockerfile

Сборка образа из Dockerfile

docker build -t <image-name> <Dockerfile-path> # Сборка образа из Dockerfile

Пример Dockerfile

FROM <base-image>
RUN <command>
COPY <source> <destination>
EXPOSE <port>
CMD ["<command>", "<argument>"]

Безопасность и секреты

Docker Secrets

docker secret create <secret-name> <file> # Создание секрета
docker secret ls                         # Список всех секретов
docker secret rm <secret-name>          # Удаление секрета

Безопасность Docker

  • Используйте Docker Secrets для централизованного управления конфиденциальными данными и их безопасной передачи в контейнеры.
  • Секреты шифруются при передаче и хранении в Docker Swarm.

Очистка

Удаление неиспользуемых ресурсов

docker system prune          # Удаление неиспользуемых данных (образы, контейнеры, сети, тома)
docker image prune           # Удаление неиспользуемых образов
docker container prune       # Удаление неиспользуемых контейнеров
docker network prune         # Удаление неиспользуемых сетей
docker volume prune          # Удаление неиспользуемых томов

Удаление образов без тегов

После успешной сборки может возникнуть ситуация, как на скриншоте команды docker images:

lot of untagged images

чтобы удалить эти образы с тегом :

docker rmi $(docker images --filter “dangling=true” -q --no-trunc)

Приведенный выше способ устарел и несовместим. Параметр dangling=true больше не используется. Применяйте:

docker system prune

появится запрос:

WARNING! This will remove:
	- all stopped containers
	- all volumes not used by at least one container
	- all networks not used by at least one container
	- all dangling images

Вы можете решить согласиться с этим предупреждением, ответив Yes.

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

Полезные ссылки

Подписаться

Получайте новые материалы про системы, инфраструктуру и AI engineering.