Полезные команды 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
Удалить остановленные контейнеры, а также docker cache:
docker system prune --filter "until=24h"
Удалить лишние образы
docker system prune -a --filter "until=24h"
Удаление всех образов
docker rmi -f $(docker images -q)