Полезные команды Docker

Список полезных команд при работе с контейнерами docker

Показывает список загруженных образов:

docker images

Скачать новый образ с сайта hub.docker.com:

docker pull centos:7

Удалить образ:

docker rmi centos:7

Создать контейнер из образа и удалить сразу после выхода из него. Рекомендуется использовать данный способ для отладки и тестирование Docker образов:

docker run -it --rm centos:7

Запуск Docker в фоне:

docker run -d -it --name centos7 centos:7 

Подключиться к существующему контейнеру и выполнить команду bash:

docker exec -it centos7 /bin/bash

Параметр -it означает задействовать терминал.

Аналогичная команда:

docker exec `docker ps | grep centos7 | awk '{print $NF}'` bash

Посмотреть список запущеных контейнеров:

docker ps

Посмотреть список всех контейнеров:

docker ps -a

Остановить контейнер:

docker stop centos7

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

docker rm centos7

Автоматически запуск контейнеров при старте системы

За автоматический запуск отвечает параметр Docker --restart=unless-stopped. Он означает перезапускать контейнер до тех пор, пока он не будет остановлен вручную. Более подробно о методах перезапуска Docker контейнеров здесь. Команда будет выглядеть следующем образом:

docker run -d --name container_name --restart=unless-stopped image_name:tag_name

Параметры запуска контейнера

--name - Имя контейнера
--restart - параметры перезагрузки
* no - По умолчанию. Не перезапускать контейнер
* on-failure - Перезапускать при ошибке
* always - Перезапускать, при перезапуске сервиса докер, даже если контейнер был остановлен
* unless-stopped - Перезапускать контейнер, при перезапуске сервиса докер, до тех пор, пока он не будет вручную остановлен.
-e ENV_NAME=value - Установить переменной окружения ENV_NAME значение value
--log-driver=journald - Использовать системный журнал, вместо json файла. Нужно обязательно указывать, т.к. логи json файла постоянно растут и отключена у них ротация
-v container_data:/data - Смонтировать volume container_data в контейнер в папку /data 
-v /srv/data:/data - Смонтировать папку с хоста /srv/data в папку контейнера /data

Экспорт, передача по ssh и импорт Docker образов

Сохранить образ в tar.gz файл:

docker image save centos:7 | gzip -c > centos7.tar.gz

Передать полученный образ по ssh на хост <myhostname>:

scp centos7.tar.gz myusername@myhostname:~/centos7.tar.gz

Загрузить образ из tar.gz файла и установить тэг centos_repos:

docker load -i  ./centos7.tar.gz

Загрузка Docker образа на Hub

Перед загрузкой, убедитесь, что тэг загружаемого образа имеет вид <ваш_репозиторий>/<загружаемый_образ>.

Авторизуйтесь в системе Docker. Это нужно делать один раз:

docker login

Установите новый тэг на ваш репозиторий:

docker tag <local_image>:<tagname> <you_repo>/<you_image>:<tagname>

Загрузите ваш Docker образ на Hub командой:

docker push <you_repo>/<you_image>:<tagname>

Узнать почему не запускается сервис

docker service ps --no-trunc service_name

Просмотреть логи сервиса

docker service logs balancer_cloud_router --tail 10 -f

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

docker rmi -f $(docker images -q)

Материалы

  1. Установка Docker на Ubuntu 18.04
  2. Установка Docker на Centos 7
  3. Описание файла compose.yaml
  4. Описание работы сети в Docker
  5. Список шаблонов сервиса