Belov Solutions

Часто используемые команды Docker

Введение

Эта статья предоставляет обзор часто используемых команд 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.

Отзывы

Оставить отзыв

Ваша эл. почта не будет опубликована