docker run

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

Options:
      --add-host value              Add a custom host-to-IP mapping (host:ip) (default [])
  -a, --attach value                Attach to STDIN, STDOUT or STDERR (default [])
      --blkio-weight value          Block IO (relative weight), between 10 and 1000
      --blkio-weight-device value   Block IO weight (relative device weight) (default [])
      --cap-add value               Add Linux capabilities (default [])
      --cap-drop value              Drop Linux capabilities (default [])
      --cgroup-parent string        Optional parent cgroup for the container
      --cidfile string              Write the container ID to the file
      --cpu-percent int             CPU percent (Windows only)
      --cpu-period int              Limit CPU CFS (Completely Fair Scheduler) period
      --cpu-quota int               Limit CPU CFS (Completely Fair Scheduler) quota
  -c, --cpu-shares int              CPU shares (relative weight)
      --cpuset-cpus string          CPUs in which to allow execution (0-3, 0,1)
      --cpuset-mems string          MEMs in which to allow execution (0-3, 0,1)
  -d, --detach                      Run container in background and print container ID
      --detach-keys string          Override the key sequence for detaching a container
      --device value                Add a host device to the container (default [])
      --device-read-bps value       Limit read rate (bytes per second) from a device (default [])
      --device-read-iops value      Limit read rate (IO per second) from a device (default [])
      --device-write-bps value      Limit write rate (bytes per second) to a device (default [])
      --device-write-iops value     Limit write rate (IO per second) to a device (default [])
      --disable-content-trust       Skip image verification (default true)
      --dns value                   Set custom DNS servers (default [])
      --dns-opt value               Set DNS options (default [])
      --dns-search value            Set custom DNS search domains (default [])
      --entrypoint string           Overwrite the default ENTRYPOINT of the image
  -e, --env value                   Set environment variables (default [])
      --env-file value              Read in a file of environment variables (default [])
      --expose value                Expose a port or a range of ports (default [])
      --group-add value             Add additional groups to join (default [])
      --health-cmd string           Command to run to check health
      --health-interval duration    Time between running the check
      --health-retries int          Consecutive failures needed to report unhealthy
      --health-timeout duration     Maximum time to allow one check to run
      --help                        Print usage
  -h, --hostname string             Container host name
  -i, --interactive                 Keep STDIN open even if not attached
      --io-maxbandwidth string      Maximum IO bandwidth limit for the system drive (Windows only)
                                    (Windows only). The format is `<number><unit>`.
                                    Unit is optional and can be `b` (bytes per second),
                                    `k` (kilobytes per second), `m` (megabytes per second),
                                    or `g` (gigabytes per second). If you omit the unit,
                                    the system uses bytes per second.
                                    --io-maxbandwidth and --io-maxiops are mutually exclusive options.
      --io-maxiops uint             Maximum IOps limit for the system drive (Windows only)
      --ip string                   Container IPv4 address (e.g. 172.30.100.104)
      --ip6 string                  Container IPv6 address (e.g. 2001:db8::33)
      --ipc string                  IPC namespace to use
      --isolation string            Container isolation technology
      --kernel-memory string        Kernel memory limit
  -l, --label value                 Set meta data on a container (default [])
      --label-file value            Read in a line delimited file of labels (default [])
      --link value                  Add link to another container (default [])
      --link-local-ip value         Container IPv4/IPv6 link-local addresses (default [])
      --log-driver string           Logging driver for the container
      --log-opt value               Log driver options (default [])
      --mac-address string          Container MAC address (e.g. 92:d0:c6:0a:29:33)
  -m, --memory string               Memory limit
      --memory-reservation string   Memory soft limit
      --memory-swap string          Swap limit equal to memory plus swap: '-1' to enable unlimited swap
      --memory-swappiness int       Tune container memory swappiness (0 to 100) (default -1).
      --name string                 Assign a name to the container
      --network-alias value         Add network-scoped alias for the container (default [])
      --network string              Connect a container to a network
                                    'bridge': create a network stack on the default Docker bridge
                                    'none': no networking
                                    'container:<name|id>': reuse another container's network stack
                                    'host': use the Docker host network stack
                                    '<network-name>|<network-id>': connect to a user-defined network
      --no-healthcheck              Disable any container-specified HEALTHCHECK
      --oom-kill-disable            Disable OOM Killer
      --oom-score-adj int           Tune host's OOM preferences (-1000 to 1000)
      --pid string                  PID namespace to use
      --pids-limit int              Tune container pids limit (set -1 for unlimited)
      --privileged                  Give extended privileges to this container
  -p, --publish value               Publish a container's port(s) to the host (default [])
  -P, --publish-all                 Publish all exposed ports to random ports
      --read-only                   Mount the container's root filesystem as read only
      --restart string              Restart policy to apply when a container exits (default "no")
                                    Possible values are : no, on-failure[:max-retry], always, unless-stopped
      --rm                          Automatically remove the container when it exits
      --runtime string              Runtime to use for this container
      --security-opt value          Security Options (default [])
      --shm-size string             Size of /dev/shm, default value is 64MB.
                                    The format is `<number><unit>`. `number` must be greater than `0`.
                                    Unit is optional and can be `b` (bytes), `k` (kilobytes), `m` (megabytes),
                                    or `g` (gigabytes). If you omit the unit, the system uses bytes.
      --sig-proxy                   Proxy received signals to the process (default true)
      --stop-signal string          Signal to stop a container, SIGTERM by default (default "SIGTERM")
      --storage-opt value           Storage driver options for the container (default [])
      --sysctl value                Sysctl options (default map[])
      --tmpfs value                 Mount a tmpfs directory (default [])
  -t, --tty                         Allocate a pseudo-TTY
      --ulimit value                Ulimit options (default [])
  -u, --user string                 Username or UID (format: <name|uid>[:<group|gid>])
      --userns string               User namespace to use
                                    'host': Use the Docker host user namespace
                                    '': Use the Docker daemon user namespace specified by `--userns-remap` option.
      --uts string                  UTS namespace to use
  -v, --volume value                Bind mount a volume (default []). The comma-delimited
                                    `options` are [rw|ro], [z|Z],
                                    [[r]shared|[r]slave|[r]private], and
                                    [nocopy]. The 'host-src' is an absolute path
                                    or a name value.
      --volume-driver string        Optional volume driver for the container
      --volumes-from value          Mount volumes from the specified container(s) (default [])
  -w, --workdir string              Working directory inside the container

Команда docker run создает записываемый слой поверх контейнера указанного образа, а задам запускает его используя заданную команду. То есть, docker run эквивалентна вызову API /containers/create, а затем /containers/(id)/start. Остановленный контейнер может быть перезапущен со всеми предыдущими изменениями с помощью команды docker start. Что бы посмотреть список контейнеров выполните команду docker ps -a.

Команда docker run может быть использована в комбинации с docker commit для изменения команды выполняемой контейнером. Дополнительную информацию о docker run вы можете получить в разделе cправка по команде Docker run.

Информацию о подключении контейнеров к сети, вы можете получить в разделе введение в сети Docker.

Примеры

Присвоение имени и псевдо-TTY (--name, -it)

$ docker run --name test -it debian
root@d6c0fe130dba:/# exit 13
$ echo $?
13
$ docker ps -a | grep test
d6c0fe130dba        debian:7            "/bin/bash"         26 seconds ago      Exited (13) 17 seconds ago                         test

Этот пример запускает контейнер с названиемtest из образа debian:latest. Флаг -it говорит Docker создать псевдно-TTY подключение к STDIN контейнера и создать интерактивную bash оболочку в контейнере. В этом примере, оболочка bash завершается вводом exit 13. Этот код выхода передается вызвавшей его docker run, и записывается в метаданные контейнера test.

Захват ID контейнера (--cidfile)

$ docker run --cidfile /tmp/docker_test.cid ubuntu echo "test"

Эта команда создает контейнер и выводит test в консоли. Флаг cidfile указывает Docker создать новый файл и записать в него ID контейнера. Если файл уже существует, Docker вернет ошибку. Docker закроет данный файл когда docker run завершится.

Полный набор привилегий для контейнера (--privileged)

$ docker run -t -i --rm ubuntu bash
root@bc338942ef20:/# mount -t tmpfs none /mnt
mount: permission denied

Данный пример не будет работать, поскольку по умолчанию наиболее потенциально опасные возможности ядра отключены; в том числе cap_sys_admin (что необходимо для монтирования файловых систем). Тем не менее, флаг --privileged позволяет выполнить команду:

$ docker run -t -i --privileged ubuntu bash
root@50e3f57e16e6:/# mount -t tmpfs none /mnt
root@50e3f57e16e6:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
none            1.9G     0  1.9G   0% /mnt

Флаг--privileged дает все привелегии контейнеру, а также снимает все ограничения контроллера cgroup. Другими словами, контейнер может совершать все действия доступные хосту. Этот флаг существует для решения специфических ситуация, таких как запуск Docker в Docker.

Установка рабочего каталога (-w)

$ docker  run -w /path/to/dir/ -i -t  ubuntu pwd

Флаг -w позволяет выполнить команду внутри указанного пути /path/to/dir/. Если путь внутри контейнера не существует он будет создан.

Опции драйвера хранилища для контейнера

$ docker run -it --storage-opt size=120G fedora /bin/bash

Данная опция позволяет задать размер корневой файловой системы при создании контейнера равный 120G. Пользователь не может задать размер меньше чем умолчанию. Эта опция доступна только для драйверов devicemapper, btrfs и zfs.

Монтирование временного файлового хранилища (--tmpfs)

$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image

Флаг --tmpfs монтирует пустое временное файловое хранилище (tmpfs) в контейнер с опциями rw, noexec, nosuid, size=65536k.

Монтирование томов данных (-v, --read-only)

$ docker  run  -v `pwd`:`pwd` -w `pwd` -i -t  ubuntu pwd

Флаг -v монтирует текущий рабочий каталог в контейнер. Флаг -w дает указание на выполнение команды внутри текущего рабочего каталога, путем изменения каталога на значение возвращаемое командой pwd. Таким образом, эта комбинация выполняет команду, используя контейнер, но внутри текущей рабочей директории.

$ docker run -v /doesnt/exist:/foo -w /foo -i -t ubuntu bash

Если директория монтируемая в качестве хранилища не существует, Docker автоматически создает ее. В приведенном выше примере, Docker создаст каталог /doesnt/existперед запуском контейнера.

$ docker run --read-only -v /icanwrite busybox touch /icanwrite/here

Хранилища могут быть использованы в комбинации с --read-only для отслеживания куда контейнер производит запись в файлы. Флаг --read-only монтирует корневую файловую систему контейнера с правами только для чтения.

$ docker run -t -i -v /var/run/docker.sock:/var/run/docker.sock -v /path/to/static-docker-binary:/usr/bin/docker busybox sh

При монтировании docker unix сокета и statically linked docker binary (читайте установка на linux из бинарных файлов), вы даете контейнеру полный доступ к Docker демону хоста.

Открытие или выставление портов (-p, --expose)

$ docker run -p 127.0.0.1:80:8080 ubuntu bash

Данная команда привязывает 8080 порт контейнера к порту 80 хоста 127.0.0.1. В руководстве пользователя Docker объясняются детали управления портами в Docker.

$ docker run --expose 80 ubuntu bash

Команда выставляет 80 порт контейнера без открытия порта на хосте.

Задание переменных окружения (-e, --env, --env-file)

$ docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash

Команда задает простые (не массивы) переменные окружения в контейнере. В вышеприведенном примере собраны все три флага для примера. Где -e, --env принимают переменную окружения и ее значение, если = не используется, то текущее значение переменной устанавливается через export, то есть. $MYVAR1 из хоста устанавливается в $MYVAR1 в контейнере. В случае если = не задано и переменная не определена на хосте, то она будет удалена из списка переменных окружения контейнера. Все три флага, -e, --env и --env-file могут быть использованы несколько раз.

Не смотря на порядок флагов, первым обрабатывается --env-file, а затем флаги -e и --env. Таким образом флаг -e или --env заменит переменные при необходимости.

$ cat ./env.list
TEST_FOO=BAR
$ docker run --env TEST_FOO="This is a test" --env-file ./env.list busybox env | grep TEST_FOO
TEST_FOO=This is a test

Флаг --env-file получает в качестве аргумента имя файла в котором каждая строка должна быть в формате VAR=VAL, имитируя аргумент передаваемый в --env. Комментарии должны начинаться с #

Пример файла передаваемого в --env-file

$ cat ./env.list
TEST_FOO=BAR

# this is a comment
TEST_APP_DEST_HOST=10.10.0.127
TEST_APP_DEST_PORT=8888
_TEST_BAR=FOO
TEST_APP_42=magic
helloWorld=true
123qwe=bar
org.spring.config=something

# pass through this variable from the caller
TEST_PASSTHROUGH
$ TEST_PASSTHROUGH=howdy docker run --env-file ./env.list busybox env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=5198e0745561
TEST_FOO=BAR
TEST_APP_DEST_HOST=10.10.0.127
TEST_APP_DEST_PORT=8888
_TEST_BAR=FOO
TEST_APP_42=magic
helloWorld=true
TEST_PASSTHROUGH=howdy
HOME=/root
123qwe=bar
org.spring.config=something

$ docker run --env-file ./env.list busybox env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=5198e0745561
TEST_FOO=BAR
TEST_APP_DEST_HOST=10.10.0.127
TEST_APP_DEST_PORT=8888
_TEST_BAR=FOO
TEST_APP_42=magic
helloWorld=true
TEST_PASSTHROUGH=
HOME=/root
123qwe=bar
org.spring.config=something

Установка метаданных контейнера (-l, --label, --label-file)

Метка представляет из себя пару key=value которая применяет метаданные к контейнеру. Что бы пометить контейнер двумя метками можно выполнить команду:

$ docker run -l my-label --label com.example.foo=bar ubuntu bash

Ключ my-label не имеет заданного значения по этому будет присвоено значение по умолчанию (""). Для добавления нескольких меток, просто используйте нужное число раз флаг метки (-l или --label).

Ключи в парах меток key=value должны быть уникальными для избежания замены значений. Если вы задали несколько меток с одинаковыми ключами и разными значениями, каждое последующее значение будет заменять предыдущее. Docker использует последнее заданное вами значение key=value.

Используйте флаг --label-file для загрузки множества меток из файла. Каждая метка должна начинаться с новой строки. В приведенном ниже примере метки загружаются из файла находящегося в том же каталоге:

$ docker run --label-file ./labels ubuntu bash

Формат файла меток похож на формат файла для загрузки переменных окружения. Метки не видны для процессов запущенных внутри контейнера. Следующий пример демонстрирует формат файла меток:

com.example.label1="a label"

# this is a comment
com.example.label2=another\ label
com.example.label3

Вы можете загрузить несколько файлов с метками использовав несколько раз флаг --label-file.

Для большей информации по использованию меток читайте раздел метки - пользовательские метаданные в Docker в руководстве Docker.

Подключение контейнера к сети (--network)

Когда вы запускаете контейнер используйте флаг --network для подключения контейнера к сети. Команда ниже добавляет контейнер busyboxк сети my-net.

$ docker run -itd --network=my-net busybox

Вы так же можете указать IP адрес для контейнера в пользовательской сети при запуске с помощью флагов --ip и --ip6.

$ docker run -itd --network=my-net --ip=10.10.9.75 busybox

Если вы хотите добавить запущенный контейнер к сети используйте команду docker network connect.

Вы можете подключить несколько контейнеров к одной сети. Будучи подключенными, контейнеры могут легко взаимодействовать для этого достаточно знать IP адрес контейнера или имя. Для overlay сетей или кастомных плагинов поддерживающих мульти-хост подключения, контейнеры подключенные к этой же мульти-хост сети но запущенные другим демоном также могут взаимодействовать этим способом.

Примечание: Обнаружение служб недоступно в сетях типа bridge по умолчанию. Контейнеры могут обмениваться данными по их IP-адресам по умолчанию. Для подключения по имени, они должны быть связаны между собой.

Вы можете отключить контейнер от сети с помощью команды docker network disconnect.

Монтирование томов из контейнера (--volumes-from)

$ docker run --volumes-from 777f7dc92da7 --volumes-from ba8c0c54f0f2:ro -i -t ubuntu pwd

Флаг --volumes-from монтирует все тома из указанного контейнера. Можно перенести тома из нескольких контейнеров с помощью повторения флага --volumes-from. ID контейнера может быть дополнен суффиксами :ro или :rw для монтирования томов в режиме только для чтения или чтения-записи. По умолчанию, тома монтируются в том же режиме в котором они были смонтированы на родительском контейнере.

Системы использующие метки, такие как SELinux требуют что бы соответствующие метки были размещены в содержимом томов смонтированных в контейнер. Без метки, система безопасности может блокировать процессы запущенные внутри контейнера и пытающиеся получить доступ к данным из тома. По умолчанию Docker не меняет метки установленные ОС.

Для изменения метки контекста контейнера, вы можете добавить один из двух суффиксов :z или :Z к монтируемому тому. Эти суффиксы говорят Docker переразметить объекты файлов на общих томах. Опция z указывает Docker что два контейнера разделяют содержимое тома. В результате, Docker метит контент общей меткой. Метка общего тома позволяет всем контейнерам производит чтение/запись контента. Опция Z говорит Docker пометить контент приватной меткой. Только текущий контейнер может использовать приватный том.

Подключение к STDIN/STDOUT/STDERR (-a)

Флаг -a сообщает команде docker run подключится к STDIN, STDOUT или STDERR контейнера. Это делает возможным манипулировать вводом/выводом.

$ echo "test" | docker run -i -a stdin ubuntu cat -

Приведенная в примере выше команда отправляет данные в контейнер и выводит его ID подключаясь только к его STDIN.

$ docker run -a stderr ubuntu echo test

Команда выше не будет выводить ничего, если не происходит ошибок, по тому что мы подключились к STDERR контейнера. Логи контейнера по прежнему будут записывать то что выводится в STDERR и STDOUT.

$ cat somefile | docker run -i -a stdin mybuilder dobuild

В этом примере показано как можно передать файл в контейнер для сборки. ID контейнера будет выведен после окончания сборки, логи сборки можно просмотреть командой docker logs. Это полезно если вам нужно передать файл или что-то еще в контейнер и получить ID контейнера после того как контейнер закончит работу.

Добавление устройств к контейнеру (--device)

$ docker run --device=/dev/sdc:/dev/xvdc --device=/dev/sdd --device=/dev/zero:/dev/nulo -i -t ubuntu ls -l /dev/{xvdc,sdd,nulo}
brw-rw---- 1 root disk 8, 2 Feb  9 16:05 /dev/xvdc
brw-rw---- 1 root disk 8, 3 Feb  9 16:05 /dev/sdd
crw-rw-rw- 1 root root 1, 5 Feb  9 16:05 /dev/nulo

Часто бывает нужно подключить устройство прямо к контейнеру. Опция --device позволяет это сделать. Например, дисковый накопитель или аудио устройство может быть добавлено в непривилегированный контейнер (т.е. без флага --privileged) и приложение будет иметь прямой доступ к устройству.

По умолчанию, контейнер будет иметь права на read, write и mknod. Вы можете изменить права задав их в виде опций :rwm для флага --device:

$ docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk  /dev/xvdc

Command (m for help): q
$ docker run --device=/dev/sda:/dev/xvdc:r --rm -it ubuntu fdisk  /dev/xvdc
You will not be able to write the partition table.

Command (m for help): q

$ docker run --device=/dev/sda:/dev/xvdc:rw --rm -it ubuntu fdisk  /dev/xvdc

Command (m for help): q

$ docker run --device=/dev/sda:/dev/xvdc:m --rm -it ubuntu fdisk  /dev/xvdc
fdisk: unable to open /dev/xvdc: Operation not permitted

Примечание: --device не может безопасно использовать виртуальные устройства. Блочные устройства которые могут быть удалены не могут быть добавлены к ненадежному контейнеру с помощью --device.

Политики перезапуска (--restart)

Используйте флаг --restart для задания политики перезапуска контейнера. Политика перезапуска указывает будет ли Docker демон перезапускать контейнер после его завершения. Docker поддерживает следующие политики перезапуска:

Значение Результат
no Не перезапускать контейнер после завершения. Это значение по умолчанию.
on-failure[:max-retries] Перезапускает контейнер если он завершился с не нулевым статусом. Опционально можно указать количество попыток перезапуска.
always Всегда перезапускает контейнер в не зависимости от статуса завершения. Когда вы выбираете данный вариант, Docker демон будет пытаться перезапустить контейнер бесконечное число раз. Также контейнер будет всегда запускаться при запуске демона, не зависимо от текущего состояния контейнера.
unless-stopped Всегда перезапускает контейнер не зависимо от статуса завершения, но не контейнер не будет запускаться при запуске демона, если контейнер до этого был остановлен вручную.
$ docker run --restart=always redis

Этот пример будет запускать контейнер redis с политикой перезапуска always, то есть если контейнер завершается, Docker перезапустит его.

Более подробную информацию по политикам перезапуска вы можете найти в разделе руководства политики перезапуска (--restart).

Добавление записей в хост файл контейнера (--add-host)

Вы можете добавить другие хосты в файл /etc/hosts контейнера с помощью флага --add-host. Этот пример добавляет статический адрес к хосту с именем docker:

$ docker run --add-host=docker:10.180.0.1 --rm -it debian
root@f38c87f2a42d:/# ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms

Иногда бывает нужно подключиться к Docker хосту из контейнера. Для этого, передайте IP адрес Docker хоста в контейнер с помощью флага --add-host. Для получения адреса хоста выполните команду ip addr show.

Флаги передаваемые в ip addr show зависят от того какую версию протокола вы используете в контейнерах IPv4 или IPv6. Используйте следующие флаги для получения сетевого адреса IPv4 и сетевой картой eth0:

$ HOSTIP=`ip -4 addr show scope global dev eth0 | grep inet | awk '{print \$2}' | cut -d / -f 1`
$ docker run  --add-host=docker:${HOSTIP} --rm -it debian

Для IPv6 используйте флаг -6 вместо -4. Для других сетевых устройств, замените eth0 корректным именем устройства (к примеру docker0 для сетевого моста).

Установка ulimits в контейнере (--ulimit)

Поскольку установка ulimit параметров в контейнере требует дополнительных привилегий не доступных в контейнере по умолчанию, вы можете задать их с помощью флага --ulimit. --ulimit задает мягкое и жесткое ограничение: <type>=<soft limit>[:<hard limit>], например:

$ docker run --ulimit nofile=1024:1024 --rm debian sh -c "ulimit -n"
1024

Примечание: Если вы не задали hard limit, то soft limit будет использован в качестве обоих значений. Если ulimits не задан, то значения будут унаследованы из заданных по умолчанию ulimits для демона. Опция as в настоящий момент отключена и следующая команда не будет выполнена: $ docker run -it --ulimit as=1024 fedora /bin/bash

Значения отправляются в том же виде в котором будут установлены syscall. Докер не выполняет преобразование байтов. Это следует учитывать при установке значения.

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

Будьте осторожны задавая nproc вместе с флагом ulimit, поскольку nproc разработан в Linux для задания максимального числа процессов доступных пользователю, а не контейнеру. К примеру, запустим четыре контейнера от пользователя daemon:

docker run -d -u daemon --ulimit nproc=3 busybox top
docker run -d -u daemon --ulimit nproc=3 busybox top
docker run -d -u daemon --ulimit nproc=3 busybox top
docker run -d -u daemon --ulimit nproc=3 busybox top

Четвертый контейнер завершиться с ошибкой “[8] System error: resource temporarily unavailable”. Ошибка происходит по тому что при запуске было установлено значение nproc=3, в результате первые три контейнера использовали квоту в 3 процесса для пользователя daemon.

Остановка контейнера по сигналу (--stop-signal)

Флаг --stop-signal задает сигнал системного вызова, который будет отправлен в контейнер для выхода. Этот сигнал может быть натуральным числом, соответствующим позиции в таблице системных вызовов ядра, например, 9 или имя сигнала в формате SIGNAME, например, SIGKILL.

Задание технологии изоляции контейнера (--isolation)

Эта опция полезна в тех случаях когда вы запускаете Docker контейнеры на Microsoft Windows. Опция --isolation <value> задает технологию изоляции контейнера. В Linux, поддерживается только опция default которая использует пространство имен Linux. Эти две команды эквивалентны в Linux:

$ docker run -d busybox top
$ docker run -d --isolation default busybox top

В Microsoft Windows, может принимать любое из следующих значений:

Значение Описание
default Используйте значение указанное Docker демоном --exec-opt . Если демон не определяет технологию изоляции, Microsoft Windows использует process как значение по умолчанию.
process Изоляция в пространстве имен.
hyperv Изоляция на основе Hyper-V разделов.

В Windows, изоляция по умолчанию для клиента hyperv и для сервера process. По этому при работе демона на Windows server без задания опции, эти две команды эквивалентны:

$ docker run -d --isolation default busybox top
$ docker run -d --isolation process busybox top

Если вы указали опцию --exec-opt isolation=hyperv в Docker демоне запущенном на Windows server, обе команды будут использовать hyperv изоляцию:

$ docker run -d --isolation default busybox top
$ docker run -d --isolation hyperv busybox top

Настройка пространства имен параметров ядра (sysctls) при запуске

Опция --sysctl устанавливает пространства имен параметров ядра (sysctls) в контейнере. К примеру, для запуска IP-переадресации в контейнерах сетевого пространства имен, выполните команду:

$ docker run --sysctl net.ipv4.ip_forward=1 someimage

Примечание: Не все параметры ядра имеют пространство имен. Docker не поддерживает изменение параметров ядра внутри контейнера, который модифицирует хост-систему. По мере развития ядра мы ожидаем увидеть больше параметров ядра в пространстве имен.

Поддерживаемые параметры ядра

IPC Namespace:

kernel.msgmax, kernel.msgmnb, kernel.msgmni, kernel.sem, kernel.shmall, kernel.shmmax, kernel.shmmni, kernel.shm_rmid_forced Параметры ядра начинающиеся с fs.mqueue.*

Если вы используете опцию --ipc=host следующие параметры ядра не доступны.

Network Namespace: Параметры ядра начинающиеся с.*

Если вы используете опцию --network=host следующие параметры ядра будут не доступны.


Комментарии:

Комментариев нет, желаете стать первым?

Пожалуйста, авторизуйтесь что бы оставлять комментарии.