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

Это руководство является частью Инструменты разработчика: Полное руководство по современным рабочим процессам разработки.
Установка
Полное руководство по установке 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:

чтобы удалить эти образы с тегом
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, образами, сетями, томами и другим. Для более глубокого погружения обращайтесь к подробным руководствам и учебным материалам, доступным в интернете.