Прим. перев.: Неделю назад Aymen El Amri, руководящий компанией eralabs и создавший обучающий курс «Безболезненный Docker», опубликовал свой Docker Cheat Sheet — шпаргалку по основным командам Docker. Git-репозиторий этого документа на GitHub уже набрал 1000+ stars и несколько сторонних контрибьюторов, что подтвердило его актуальность и пользу.

Представленные здесь команды описаны минимально (с акцентом на читаемость как есть) и включают в себя установку Docker, работу с реестрами и репозиториями, контейнерами, образами, сетью, Docker Swarm. Ниже представлен перевод шпаргалки в её состоянии на 2 сентября с дополнениями из комментариев ниже.
Скачайте dmg по этой ссылке:
Используйте MSI-инсталлятор:
По умолчанию для Docker 17.06.1+ тома не удаляются. Чтобы удалились и они тоже:
Прим. перев.: в Docker версий 1.12.0+ ничего дополнительно устанавливать не требуется, т.к. Docker Swarm встроен в Docker Engine в виде специального режима (Swarm mode).
Прим. перев.: Напомню, что оригинальная (англоязычная) версия Docker Cheat Sheet доступна и обновляется в Git-репозитории. Автор будет рад исправлениям/пополнениям от сообщества.
Читайте также в нашем блоге:

Представленные здесь команды описаны минимально (с акцентом на читаемость как есть) и включают в себя установку Docker, работу с реестрами и репозиториями, контейнерами, образами, сетью, Docker Swarm. Ниже представлен перевод шпаргалки в её состоянии на 2 сентября с дополнениями из комментариев ниже.
Установка
Linux
curl -sSL https://get.docker.com/ | shMac
Скачайте dmg по этой ссылке:
https://download.docker.com/mac/stable/Docker.dmgWindows
Используйте MSI-инсталлятор:
https://download.docker.com/win/stable/InstallDocker.msiРеестры и репозитории Docker
Вход в реестр
docker logindocker login localhost:8080Выход из реестра
docker logoutdocker logout localhost:8080Поиск образа
docker search nginxdocker search nginx --?filter stars=3 --no-trunc busyboxPull (выгрузка из реестра) образа
docker pull nginxdocker pull eon01/nginx localhost:5000/myadmin/nginxPush (загрузка в реестр) образа
docker push eon01/nginxdocker push eon01/nginx localhost:5000/myadmin/nginxПервые действия с контейнерами
Создание контейнера
docker create -t -i eon01/infinite --name infiniteПервый запуск контейнера
docker run -it --name infinite -d eon01/infiniteПереименование контейнера
docker rename infinite infinityУдаление контейнера
docker rm infiniteОбновление контейнера
docker update --cpu-shares 512 -m 300M infiniteЗапуск и остановка контейнеров
Запуск остановленного контейнера
docker start nginxОстановка
docker stop nginxПерезагрузка
docker restart nginxПауза (приостановка всех процессов контейнера)
docker pause nginxСнятие паузы
docker unpause nginxБлокировка (до остановки контейнера)
docker wait nginxОтправка SIGKILL (завершающего сигнала)
docker kill nginxОтправка другого сигнала
docker kill -s HUP nginxПодключение к существующему контейнеру
docker attach nginxПолучение информации о контейнерах
Работающие контейнеры
docker psdocker ps -aЛоги контейнера
docker logs infiniteИнформация о контейнере
docker inspect infinitedocker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -q)События контейнера
docker events infiniteПубличные порты
docker port infiniteВыполняющиеся процессы
docker top infiniteИспользование ресурсов
docker stats infiniteИзменения в файлах или директориях файловой системы контейнера
docker diff infiniteУправление образами
Список образов
docker imagesСоздание образов
docker build .docker build github.com/creack/docker-firefoxdocker build - < Dockerfiledocker build - < context.tar.gzdocker build -t eon/infinite .docker build -f myOtherDockerfile .curl example.com/remote/Dockerfile | docker build -f - .Удаление образа
docker rmi nginxЗагрузка репозитория в tar (из файла или стандартного ввода)
docker load < ubuntu.tar.gzdocker load --input ubuntu.tarСохранение образа в tar-архив
docker save busybox > ubuntu.tarПросмотр истории образа
docker historyСоздание образа из контейнера
docker commit nginxТегирование образа
docker tag nginx eon01/nginxPush (загрузка в реестр) образа
docker push eon01/nginxСеть
Создание сети
docker network create -d overlay MyOverlayNetworkdocker network create -d bridge MyBridgeNetworkdocker network create -d overlay --subnet=192.168.0.0/16 --subnet=192.170.0.0/16 --gateway=192.168.0.100 --gateway=192.170.0.100 --ip-range=192.168.1.0/24 --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" MyOverlayNetworkУдаление сети
docker network rm MyOverlayNetworkСписок сетей
docker network lsПолучение информации о сети
docker network inspect MyOverlayNetworkПодключение работающего контейнера к сети
docker network connect MyOverlayNetwork nginxПодключение контейнера к сети при его запуске
docker run -it -d --network=MyOverlayNetwork nginxОтключение контейнера от сети
docker network disconnect MyOverlayNetwork nginxОчистка Docker
Удаление работающего контейнера
docker rm nginxУдаление контейнера и его тома (volume)
docker rm -v nginxУдаление всех контейнеров со статусом exited
docker rm $(docker ps -a -f status=exited -q)Удаление всех остановленных контейнеров
docker container prunedocker rm `docker ps -a -q`Удаление контейнеров, остановленных более суток назад
docker container prune --filter "until=24h"Удаление образа
docker rmi nginxУдаление неиспользуемых (dangling) образов
docker image prunedocker rmi $(docker images -f dangling=true -q)Удаление неиспользуемых (dangling) образов даже с тегами
docker image prune -aУдаление всех образов
docker rmi $(docker images -a -q)Удаление всех образов без тегов
docker rmi -f $(docker images | grep "^<none>" | awk "{print $3}")Остановка и удаление всех контейнеров
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)Удаление неиспользуемых (dangling) томов
docker volume prunedocker volume rm $(docker volume ls -f dangling=true -q)Удаление неиспользуемых (dangling) томов по фильтру
docker volume prune --filter "label!=keep"Удаление неиспользуемых сетей
docker network pruneУдаление всех неиспользуемых объектов
docker system pruneПо умолчанию для Docker 17.06.1+ тома не удаляются. Чтобы удалились и они тоже:
docker system prune --volumesDocker Swarm
Установка Docker Swarm
curl -ssl https://get.docker.com | bashПрим. перев.: в Docker версий 1.12.0+ ничего дополнительно устанавливать не требуется, т.к. Docker Swarm встроен в Docker Engine в виде специального режима (Swarm mode).
Инициализация Swarm
docker swarm init --advertise-addr 192.168.10.1Подключение рабочего узла (worker) к Swarm
docker swarm join-token workerПодключение управляющего узла (manager) к Swarm
docker swarm join-token managerСписок сервисов
docker service lsСписок узлов
docker node lsСоздание сервиса
docker service create --name vote -p 8080:80 instavote/voteСписок заданий Swarm
docker service psМасштабирование сервиса
docker service scale vote=3Обновление сервиса
docker service update --image instavote/vote:movies votedocker service update --force --update-parallelism 1 --update-delay 30s nginxdocker service update --update-parallelism 5--update-delay 2s --image instavote/vote:indent votedocker service update --limit-cpu 2 nginxdocker service update --replicas=5 nginxP.S.
Прим. перев.: Напомню, что оригинальная (англоязычная) версия Docker Cheat Sheet доступна и обновляется в Git-репозитории. Автор будет рад исправлениям/пополнениям от сообщества.
Читайте также в нашем блоге:
Комментарии (13)

andrzzc
01.09.2017 12:00+1Установка
Linux
curl -sSL get.docker.com | sh
Хорошо хоть https а не http ) но все равно лучше так не делать без большой необходимости.
В шпаргалке не хватает docker export — сохранение работающего контейнера в файл для последующего извлечения данных (не путать с docker save — сохранение образа).
Еще не хватает команд для изменения сохраненных настроек контейнера (не путать с изменением параметров работающего контейнера) — 1) вкл-выкл автозапуск 2) изменение настроек сети или линк с другими контейнерами 3) монтирование папок 4) список команд для переноса работающего контейнера с одного хоста на другой с теми же параметрами запуска, без swarm.

helpik94
01.09.2017 14:33Мне еще вот такая ссылка как-то попадалась — linoxide.com/linux-how-to/docker-commands-cheat-sheet
Выглядит компактнее, и распечатать можно

shushu
02.09.2017 08:59Удалять контейнеры все же лучше с опцией -v
Если докерфайл содержит инструкции по экспорту пути/раздела этот раздел будет создан в отдельном каталоге в /var/lib/docker.
А при удалении контейнера без вышеупомянутой опции этот каталог удалён не будет. (Кстати как легко чистить подобные каталоги я не знаю.) Это особенно актуально при знакомстве с докером. Создал — удалил контейнер пару раз и место на диске закончилось...
kivsiak
.