Введение
Эта статья предоставляет обзор часто используемых команд Docker, таких как docker run, docker attach, docker exec и других, с акцентом на их практическое применение для управления контейнерами и образами. Для получения справки используйте флаг --help или команду docker help.
Логические флаги в командах Docker
В Docker логические (boolean) флаги могут быть явно установлены в true или false. Флаги с true по умолчанию активны, если не указаны, и отключаются только с =false. Пример с флагом --sig-proxy (по умолчанию true):
$ docker run --sig-proxy=false ...
Эквивалентные команды:
$ docker run --sig-proxy=true ...
$ docker run --sig-proxy ...
$ docker run ...
Для флага с false по умолчанию, например --read-only, активация требует явного указания:
$ docker run --read-only=true ...
$ docker run --read-only ...
Проверить значение флага по умолчанию можно с помощью --help, например:
$ docker logs --help
...
-f, --follow=false Follow log output
--help=false Print usage
-t, --timestamps=false Show timestamps
...
Команда docker run
Команда docker run запускает новый контейнер и поддерживает множество аргументов для настройки. Основные флаги:
- -a, —attach: Подключает потоки (stdout, stderr, stdin) к терминалу. Несовместим с
-d. - -d, —detach: Запускает контейнер в фоновом режиме, возвращая его ID.
- -i, —interactive: Поддерживает открытый поток stdin. Часто используется с
-tдля интерактивного режима, например:
$ docker run -it debian /bin/bash
root@bd0f26f928bb:/# ls
... - —restart: Настраивает политику перезапуска (
no,always,on-failure[:N]). Пример:
$ docker run --restart on-failure:10 postgres - —rm: Автоматически удаляет контейнер после завершения. Несовместим с
-d. - -t, —tty: Создаёт псевдотерминал TTY, используется с
-i. - -e, —env: Устанавливает переменные среды. Пример:
$ docker run -e var1=val -e var2="val 2" debian env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b15f833d65d8
var1=val
var2=val 2
HOME=/root
- -h, —hostname: Задаёт имя хоста. Пример:
$ docker run -h "myhost" debian hostname
myhost
- —name: Присваивает имя контейнеру.
- -v, —volume: Создаёт тома (см. раздел «Управление данными»).
- —volumes-from: Монтирует тома из другого контейнера.
- —expose: Объявляет порты для контейнера, работает с
-P. - —link: Настраивает соединение между контейнерами (см. раздел «Соединение между контейнерами»).
- -p, —publish: Публикует порт контейнера на хосте.
- -P, —publish-all: Публикует все порты, объявленные в
EXPOSE. - —entrypoint: Заменяет точку входа из
Dockerfile. - -u, —user: Задаёт пользователя для выполнения команд.
- -w, —workdir: Устанавливает рабочий каталог.
Управление контейнерами
Другие команды для управления контейнерами:
- docker attach: Подключается к основному процессу контейнера. Пример:
$ ID=$(docker run -d debian sh -c "while true; do echo 'tick'; sleep 1; done;")
$ docker attach $ID
tick
tick
... Примечание: Для выхода без остановки контейнера используйте Ctrl+P, Ctrl+Q.
- docker create: Создаёт контейнер без запуска, использует те же аргументы, что и
docker run. - docker cp: Копирует файлы между хостом и контейнером.
- docker exec: Выполняет команду в контейнере. Пример:
$ ID=$(docker run -d debian sh -c "while true; do sleep 1; done;")
$ docker exec $ID echo "Hello"
Hello
$ docker exec -it $ID /bin/bash
root@5c6c32041d68:/# ls
... - docker kill: Посылает сигнал процессу (по умолчанию SIGKILL). Пример:
$ ID=$(docker run -d debian bash -c \
"trap 'echo caught' SIGTRAP; while true; do sleep 1; done;")
$ docker kill -s SIGTRAP $ID
e33da73c275b56e734a4bbbefc0b41f6ba84967d09ba08314edd860ebd2da86c
$ docker logs $ID
caught
- docker pause: Приостанавливает процессы в контейнере.
- docker unpause: Возобновляет приостановленные процессы.
- docker restart: Перезапускает контейнер.
- docker rm: Удаляет контейнеры. Пример удаления всех остановленных контейнеров:
$ docker rm $(docker ps -aq)
b7a4e94253b3
... - docker start: Запускает остановленный или созданный контейнер.
- docker stop: Останавливает контейнер.
Информация о механизме Docker
Команды для получения информации:
- docker info: Выводит данные о системе Docker.
- docker version: Показывает версии клиента и сервера Docker.
- docker help: Выводит справку по командам.
Информация о контейнерах
Команды для работы с контейнерами:
- docker diff: Показывает изменения в файловой системе контейнера. Пример:
$ ID=$(docker run -d debian touch /NEW-FILE)
$ docker diff $ID
A /NEW-FILE
- docker events: Выводит события демона в реальном времени.
- docker inspect: Показывает конфигурацию контейнера или образа.
- docker logs: Выводит журналы контейнера.
- docker port: Показывает отображение портов. Пример:
$ ID=$(docker run -P -d redis)
$ docker port $ID
6379/tcp -> 0.0.0.0:32768
- docker ps: Выводит информацию о контейнерах. С флагом
-a— о всех контейнерах. - docker top: Показывает процессы в контейнере. Пример:
$ ID=$(docker run -d redis)
$ docker top $ID
UID PID PPID C STIME TTY TIME CMD
999 9243 1836 0 15:44 ? 00:00:00 redis-server *:6379
Работа с образами
Команды для работы с образами:
- docker build: Создаёт образ из
Dockerfile. - docker commit: Создаёт образ из контейнера. Пример:
$ ID=$(docker run -d redis touch /new-file)
$ docker commit -a "Joe Bloggs" -m "Comment" $ID commit:test
ac479108b0fa9a02a7fb290a22dacd5e20c867ec512d6813ed42e3517711a0cf
- docker export: Экспортирует файловую систему контейнера в tar-архив.
- docker history: Показывает уровни образа.
- docker images: Выводит список локальных образов. Пример удаления «висячих» образов:
$ docker rmi $(docker images -q -f dangling=true)
Deleted: a9979d5ace9af55a562b8436ba66a1538357bc2e0e43765b406f2cf0388fe062
- docker import: Создаёт образ из tar-архива. Пример:
$ docker export 35d171091d78 | docker import - Satten:test
5a9bc529af25e2cf6411c6d87442e0805c066b96e561fbd1935122f988086009
- docker load: Загружает образы из tar-архива.
- docker rmi: Удаляет образы.
- docker save: Сохраняет образы в tar-архив. Пример:
$ docker save -o /tmp/redis.tar redis:latest
$ docker load -i /tmp/redis.tar
- docker tag: Присваивает тег образу. Пример:
$ docker tag faa2b75ce09a newname
$ docker tag newname:latest amouat/newname:newtag
Работа с реестром
Команды для работы с реестрами:
- docker login: Регистрация в реестре (по умолчанию Docker Hub).
- docker logout: Выход из реестра.
- docker pull: Загружает образ из реестра.
- docker push: Выгружает образ в реестр.
- docker search: Ищет репозитории в Docker Hub.
Заключение
Команды Docker, такие как docker run, docker exec, и docker images, обеспечивают гибкое управление контейнерами и образами. Понимание логических флагов и правильное использование команд упрощают работу с Docker.
Отзывы