Памятка по docker CLI
Памятка по docker CLI
Базовые команды
Запуск контейнера в фоне
docker run -d nginx
Запуск контейнера с shell
docker run -it ubuntu bash
Запуск контейнера, удаляющегося после остановки
docker run --rm ubuntu bash
Экспорт порта контейнера
docker run -p 80:80 -d nginx
Задать имя контейнера
docker run --name frontend nginx
Запустить остановленный контейнер
docker start frontend
Остановить контейнер
docker stop frontend
Управление контейнерами
Показать работающие контейнеры
docker ps
Показать работающие и остановленные контейнеры
docker ps -a
Показать метаданные контейнера
docker inspect c31337
Показать доступные локально образы
docker images
Удалить все остановленные контейнеры
docker rm $(docker ps --filter status=expired -q)
Показать все контейнеры со специальной меткой
docker ps --filter label=traefik.backend
Показать конкретные метаданные контейнера
docker inspect -f '{{ .NetworkSettings.IPAddress }}' c31337
Запустить ничего не делающий контейнер
docker run -d busybox /bin/sh -c "while true; do sleep 2; done"
Сборка образа
На основе Dockerfile в текущей директории
docker build --tag my-image .
«Жёсткая» пересборка
docker build --no-cache my-image .
Преобразовать контейнер в образ
docker commit c31337 my-image
Удалить все неиспользуемые образы
docker rmi $(docker images -q -f "dangling=true")
Отладка
Зайти в работающий контейнер
docker exec -ti c31337 bash
Просмотр логов запущенного контейнера
docker logs -f c31337
Показать экспортированные порты
docker port c31337
Диски
Создать локальный диск
docker volume create --name my-volume
Монтирование диска при старте контейнера
docker run -v my-volume:/data nginx
Удалить диск
docker volume rm my-volume
Показать все созданные диски
docker volume ls
Сети
Создать локальную сеть
docker network create my-net
Подключить контейнер к сети при старте
docker run -d --net my-net nginx
Подключить работающий контейнер к сети
docker network connect my-net c31337
Отключить работающий контейнер от сети
docker network disconnect my-net c31337
Управление Docker Machine
Запустить Docker Machine
docker-machine start machine_name
Остановить Docker Machine
docker-machine stop machine_name
Настроить Docker на работу с удалённой Docker Machine
eval "$(docker-machine env machine_name)"
Работа с Dockerfile
Сборка образа из файла Dockerfile, учитывая, что мы находимся
в папке, где лежит этот файл:
docker build -t my_docker .
Через ключ -t назначаем имя нашему образу.
Точка в конце означает, что Dockerfile лежит в текущей директории.
Просмотреть существующие на хосте образы Docker
docker images
Просмотреть существующие на хосте контейнеры Docker
docker ps -a
-a — по умолчанию команда показывает только включённые контейнеры,
вместе с ключом выводит все контейнеры.
Удаление и экспорт
Удалить контейнер
docker rm
Удалить образ
docker rmi
С ключом --force — принудительное удаление.
Удалить все существующие контейнеры
docker rm $(docker ps -a -q)
Экспортировать Docker-образ
sudo docker save -o linux-nginx.img linux-nginx
Импортировать Docker-образ
sudo docker load -i linux-nginx.img
Запуск контейнера с Bash
Запустить контейнер и открыть в нём bash:
docker run -it -d --name my_container 397bd34237 /bin/bash
Параметры:
run— команда запуска контейнера.-it— перейти в контейнер и запустить внутри контейнера команду.-d— запустить контейнер в фоне и вывести его ID.--name— присвоить имя контейнеру.397bd34237— ID/имя образа./bin/bash— выполняемая команда в контейнере.
Запустить контейнер, который уже запускался
docker start ID-контейнера
Bash-скрипт для запуска Docker-образа
#!/bin/bash
CONFIG=/home/isavel/ELK+KAFKA/for_docker_image/config/
PATTERN=/home/isavel/ELK+KAFKA/for_docker_image/pattern/
LOG=/home/isavel/ELK+KAFKA/for_docker_image/logs
docker run \
--restart=always -it \
-p 443:443 -p 80:80 -p 5601:5601 \
-e "TZ=Europe/Moscow" \
-v $CONFIG:/etc/logstash/conf.d/ \
-v $LOG:/var/log/my_log/ \
-v $PATTERN:/opt/logstash/patterns/ \
--name sberteh \
5e89f9aa5754
Описание:
docker run— команда запуска.--restart=always— в случае падения перезапускать контейнер.-p 443:443 -p 80:80 -p 5601:5601— проброс портов из Docker на localhost.- Формат порта:
port_localhost:port_docker_image. -e "TZ=Europe/Moscow"— указать timezone контейнера.-v $CONFIG:/etc/logstash/conf.d/— проброс директории с локальной машины.-v $LOG:/var/log/my_log/— проброс директории логов.-v $PATTERN:/opt/logstash/patterns/— проброс директории patterns.--name sberteh— название контейнера.5e89f9aa5754— ID запускаемого образа.
Копирование файлов внутрь контейнера
docker cp some_files.conf docker_container:/home/docker/
Выполнить Bash внутри уже запущенного контейнера
docker exec -it name_of_container /bin/bash
Экспорт и импорт образа
Выгрузить образ в файл:
docker save -o=file.tar CONTAINER
Импортировать его:
docker load --input=file.tar
Загрузка Docker-образа в локальный репозиторий
Присвоить тег:
docker tag [name_image] [repo_name]:[port]/[name_image]
Отправить образ:
docker push [repo_name]:[port]/[name_image]
Установка Docker
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 nginx --filter stars=3 --no-trunc busybox
Pull — загрузка образа из реестра
docker pull nginx
Примеры:
docker pull eon01/nginx
docker pull localhost:5000/myadmin/nginx
Push — загрузка образа в реестр
docker push eon01/nginx
Пример с локальным реестром:
docker push 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
Отправка другого сигнала
Например, HUP:
docker kill -s HUP nginx
Подключение к существующему контейнеру
docker attach nginx
Получение информации о контейнерах
Работающие контейнеры
docker ps
Все контейнеры
docker ps -a
Авторский пост защищен лицензией CC BY 4.0.