DockerCheatSheet

🐋 Docker Cheat Sheet 🐋

View the Project on GitHub eon01/DockerCheatSheet

This repository is trending on Github since some days now. Watch it, we will add many updates in the future. Thank you for your support.

Check the website.

Прочитать на других языках: English, Russian.

Содержание

Установка

Linux

Больше информации здесь

curl -sSL https://get.docker.com/ | sh

Mac

Больше информации здесь

Скачайте dmg по этой ссылке.

https://download.docker.com/mac/stable/Docker.dmg

Windows

Больше информации здесь

Используйте MSI-инсталлятор:

https://download.docker.com/win/stable/InstallDocker.msi

Реестры и репозитории Docker

Вход в реестр

docker login
docker login localhost:8080

Выход из реестра.

docker logout
docker logout localhost:8080

Поиск образа

docker search nginx
docker search --filter stars=3 --no-trunc nginx

Pull (выгрузка из реестра) образа

docker image pull nginx
docker image pull eon01/nginx localhost:5000/myadmin/nginx

Push (загрузка в реестр) образа

docker image push eon01/nginx
docker image push eon01/nginx localhost:5000/myadmin/nginx

Первые действия с контейнерами

Создание и запуск простого контейнера

  • Запустите образ ubuntu:latest
  • Свяжите порт 80 КОНТЕЙНЕРА с портом 3000 ХОСТА
  • Смонтируйте текущую директорию в /data на КОНТЕЙНЕРЕ
  • Заметка: на windows вы должны изменить -v ${PWD}:/data на -v "C:\Data":/data
docker container run --name infinite -it -p 3000:80 -v ${PWD}:/data ubuntu:latest

Создание контейнера

docker container create -t -i eon01/infinite --name infinite

Запуск контейнера

docker container run -it --name infinite -d eon01/infinite

Переименование контейнера

docker container rename infinite infinity

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

docker container rm infinite

Обновление контейнера

docker container update --cpu-shares 512 -m 300M infinite

Запуск и остановка контейнеров

Запуск

docker container start nginx

Остановка

docker container stop nginx

Перезапуск

docker container restart nginx

Пауза (приостановка всех процессов контейнера)

docker container pause nginx

Снятие паузы

docker container unpause nginx

Блокировка (до остановки контейнера)

docker container wait nginx

Отправка SIGKILL (завершающего сигнала)

docker container kill nginx

Отправка другого сигнала

docker container kill -s HUP nginx

Подключение к существующему контейнеру

docker container attach nginx

Получение информации о контейнерах

Работающие контейнеры

docker container ls
docker container ls -a

Логи контейнера

docker logs infinite

Следовать логам контейнера (вывод логов с обновлениями в реальном времени)

docker container logs infinite -f

Информация о контейнере

docker container inspect infinite
docker container inspect --format '' $(docker ps -q)

События контейнера

docker system events infinite

Публичные порты

docker container port infinite

Выполняющиеся процессы

docker container top infinite

Использование ресурсов

docker container stats infinite

Изменения в файлах или директориях файловой системы контейнера

docker container diff infinite

Управление образами

Список образов

docker image ls

Создание образов

docker build .
docker build github.com/creack/docker-firefox
docker build - < Dockerfile
docker build - < context.tar.gz
docker build -t eon/infinite .
docker build -f myOtherDockerfile .
curl example.com/remote/Dockerfile | docker build -f - .

Удаление образа

docker image rm nginx

Загрузка репозитория в tar (из файла или стандартного ввода)

docker image load < ubuntu.tar.gz
docker image load --input ubuntu.tar

Сохранение образа в tar-архив

docker image save busybox > ubuntu.tar

Просмотр истории образа

docker image history

Создание образа из контейнера

docker container commit nginx

Тегирование образа

docker image tag nginx eon01/nginx

Push (загрузка в реестр) образа

docker image push eon01/nginx

Сеть

Создание сети

docker network create -d overlay MyOverlayNetwork
docker network create -d bridge MyBridgeNetwork
docker 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 container run -it -d --network=MyOverlayNetwork nginx

Отключение контейнера от сети

docker network disconnect MyOverlayNetwork nginx

Exposing Ports

Используя Dockerfile, вы можете раскрыть порт в контейнере используя:

EXPOSE <port_number>

You can also map порт контейнера to порт хоста используя:

Например,

docker run -p $HOST_PORT:$CONTAINER_PORT --name infinite -t infinite

Очистка Docker

Удаление работающего контейнера

docker container rm nginx

Удаление контейнера и его тома (volume)

docker container rm -v nginx

Удаление всех контейнеров со статусом exited

docker container rm $(docker container ls -a -f status=exited -q)

Удаление всех остановленных контейнеров

docker container rm `docker container ls -a -q`

Удаление образа

docker image rm nginx

Удаление неиспользуемых (dangling) образов

docker image rm $(docker image ls -f dangling=true -q)

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

docker image rm $(docker image ls -a -q)

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

docker image rm -f $(docker image ls | grep "^<none>" | awk "{print $3}")

Остановка и удаление всех контейнеров

docker container stop $(docker container ls -a -q) && docker container rm $(docker container ls -a -q)

Удаление неиспользуемых (dangling) томов

docker volume rm $(docker volume ls -f dangling=true -q)

Removing all unused (containers, images, networks and volumes)

docker system prune -f

Полная очистка

docker system prune -a

Docker Swarm

Установка Docker Swarm

curl -ssl https://get.docker.com | bash

Инициализация 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 vote
docker service update --force --update-parallelism 1 --update-delay 30s nginx
docker service update --update-parallelism 5--update-delay 2s --image instavote/vote:indent vote
docker service update --limit-cpu 2 nginx
docker service update --replicas=5 nginx

Заметки

Эта работа впервые была опубликована в Painless Docker Course