Содержание
February 19, 2026 · View on GitHub
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.
Work adapted from Painless Docker (2nd edition).
Прочитать на других языках: English, Russian.
Содержание
- Установка
- Реестры и репозитории Docker
- Первые действия с контейнерами
- Запуск и остановка контейнеров
- Получение информации о контейнерах
- Сеть
- Очистка Docker
- Docker Swarm
- Docker Compose
- Полезные команды
- Заметки
Установка
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 '{{ .NetworkSettings.IPAddress }}' $(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
Docker Compose
docker compose up -d # Запуск сервисов в фоне
docker compose down # Остановка и удаление контейнеров
docker compose down -v # Остановка + удаление volumes
docker compose logs -f # Просмотр логов
docker compose ps # Список запущенных сервисов
docker compose exec app sh # Выполнить команду в сервисе
docker compose build --no-cache # Пересобрать без кэша
Полезные команды
Копирование файлов между контейнером и хостом
docker cp container:/path/file /host/path
docker cp /host/path container:/path/file
Просмотр использования ресурсов
docker stats
docker system df
Получить IP контейнера
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
Запуск от имени определённого пользователя
docker exec -u root -it container_name sh
Быстрая очистка
docker system prune -a --volumes # Удалить все неиспользуемые данные
Заметки
Эта работа впервые была опубликована в Painless Docker Course