Docker: Справочник

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

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

Здесь находится Справочник по Docker, охватывающий самые важные команды и концепции, от установки до запуска контейнеров и очистки:

логотип Docker

Установка

На Ubuntu

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl start docker

Установка Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

Общие команды 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          # Удаление всех ненужных образов

Удаление висячих образов

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>    # Удаление сети

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

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

Docker Compose

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

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

он спросит:

ПРЕДУПРЕЖДЕНИЕ! Это удалит:
	- все остановленные контейнеры
	- все тома, не используемые хотя бы одним контейнером
	- все сети, не используемые хотя бы одним контейнером
	- все висячие образы

Вы можете решить сказать «Да» к этому предупреждению…

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

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