==== docker service create ====
Эта команда работает с Swarm. Создаёт новую службу.
docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
^ Имя, сокращенно ^ По умолчанию ^ Описание |
| ''--cap-add'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.41/|API 1.41+]]. Добавляет возможности Linux |
| ''--cap-drop'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.41/|API 1.41+]]. Отбросьте возможности Linux |
| ''--config'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.41/|API 1.41+]]. Указывает конфигурации для предоставления службе |
| ''--constraint'' | | Ограничения по размещению |
| ''--container-label'' | | Этикетки контейнеров |
| ''--credential-spec'' | | Спецификация учетных данных для управляемой учетной записи службы (только для Windows) |
| ''--detach'', ''-d'' | | Немедленно выйти, не дожидаясь сходимости службы |
| ''--dns'' | | Устанавливает пользовательские DNS-серверы |
| ''--dns-option'' | | Устанавливает параметры DNS |
| ''--dns-search'' | | Устанавливает пользовательские домены поиска DNS |
| ''--endpoint-mode'' | ''vip'' | Режим конечной точки (vip или dnsrr) |
| ''--entrypoint'' | | Перезаписать ENTRYPOINT образа по умолчанию |
| ''--env'', ''-e'' | | Устанавливает переменные среды |
| ''--env-file'' | | Чтение в файле переменных окружения |
| ''--generic-resource'' | | Пользовательские ресурсы |
| ''--group'' | | Устанавливает одну или несколько дополнительных групп пользователей для контейнера |
| ''--health-cmd'' | | Команда запуска для проверки здоровья |
| ''--health-interval'' | | Время между запусками проверки (мс%%|%%с%%|%%м%%|%%ч) |
| ''--health-retries'' | | Последовательные сбои необходимо сообщать о нездоровой |
| ''--health-start-period'' | | Начальный период для инициализации контейнера до подсчета попыток перехода к нестабильной работе (мс%%|%%с%%|%%м%%|%%ч) |
| ''--health-timeout'' | | Максимальное время выполнения одной проверки (мс%%|%%с%%|%%м%%|%%ч) |
| ''--host'' | | Устанавливает одно или несколько настраиваемых сопоставлений хоста и IP (хост: ip) |
| ''--hostname'' | | Имя узла контейнера |
| ''--init'' | | Используйте init внутри каждого сервисного контейнера для пересылки сигналов и получения процессов |
| ''--isolation'' | | Режим изоляции сервисного контейнера |
| ''--label'', ''-l'' | | Сервисные этикетки |
| ''--limit-cpu'' | | Ограничьте процессоры |
| ''--limit-memory'' | | Ограничить память |
| ''--limit-pids'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.41/|API 1.41+]]. Данный параметр работает для оркестратора Swarm. Ограничьте максимальное количество процессов (по умолчанию 0 = неограниченно) |
| ''--log-driver'' | | Регистрация драйвера для службы |
| ''--log-opt'' | | Запись параметров драйвера |
| ''--max-concurrent'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.41/|API 1.41+]]. Количество задач задания для одновременного запуска (по умолчанию равно --replicas) |
| ''--mode'' | ''replicated'' | Режим обслуживания (реплицированный, глобальный, реплицированный-задание или глобальный-задание) |
| ''--mount'' | | Прикрепите монтирование файловой системы к службе |
| ''--name'' | | Наименование услуги |
| ''--network'' | | Сетевые вложения |
| ''--no-healthcheck'' | | Отключает все указанные контейнером HEALTHCHECK |
| ''--no-resolve-image'' | | Не запрашивайте реестр для разрешения дайджеста образа и поддерживаемых платформ |
| ''--placement-pref'' | | Добавляет предпочтительный опция размещения |
| ''--publish'', ''-p'' | | Опубликуйте порт как порт узла |
| ''--quiet'', ''-q'' | | Подавить вывод прогресса |
| ''--read-only'' | | Смонтируйте корневую файловую систему контейнера только для чтения |
| ''--replicas'' | | Количество задач |
| ''--replicas-max-per-node'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.40/|API 1.40+]]. Максимальное количество задач на узел (по умолчанию 0 = неограниченно) |
| ''--reserve-cpu'' | | Резервные процессоры |
| ''--reserve-memory'' | | Резервная память |
| ''--restart-condition'' | | Перезапуск при выполнении условия («нет»%%|%%»при сбое»%%|%%»любой») (по умолчанию «любой») |
| ''--restart-delay'' | | Задержка между попытками перезапуска (ns%%|%%us%%|%%ms%%|%%s%%|%%m%%|%%h) (по умолчанию 5 с) |
| ''--restart-max-attempts'' | | Максимальное количество перезапусков перед отказом |
| ''--restart-window'' | | Окно, используемое для вычисления политики перезапуска (ns%%|%%us%%|%%ms%%|%%s%%|%%m%%|%%h) |
| ''--rollback-delay'' | | Задержка между откатами задач (ns%%|%%us%%|%%ms%%|%%s%%|%%m%%|%%h) (по умолчанию 0 с) |
| ''--rollback-failure-action'' | | Действие при неудачном откате («пауза»%%|%%»продолжить») (по умолчанию «пауза») |
| ''--rollback-max-failure-ratio'' | | Допустимая частота отказов во время отката (по умолчанию 0) |
| ''--rollback-monitor'' | | Продолжительность после каждого отката задачи для отслеживания сбоя (ns%%|%%us%%|%%ms%%|%%s%%|%%m%%|%%h) (по умолчанию 5 с) |
| ''--rollback-order'' | | Порядок отката («старт-первый»%%|%%»сначала остановлен») (по умолчанию «сначала остановлен»).|
| ''--rollback-parallelism'' | ''1'' | Максимальное количество задач, откатываемых одновременно (0, чтобы откатить все сразу) |
| ''--secret'' | | Указывает секреты, которые необходимо предоставить службе |
| ''--stop-grace-period'' | | Время ожидания перед принудительным уничтожением контейнера (ns%%|%%us%%|%%ms%%|%%s%%|%%m%%|%%h) (по умолчанию 10 с) |
| ''--stop-signal'' | | Сигнал на остановку контейнера |
| ''--sysctl'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.40/|API 1.40+]]. Системные параметры |
| ''--tty'', ''-t'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.40/|API 1.40+]]. Назначает псевдо-TTY |
| ''--ulimit'' | | [[https://digitology.tech/goto/?url=https://docs.docker.com/engine/api/v1.41/|API 1.41+]]. Улимит варианты |
| ''--update-delay'' | | Задержка между обновлениями (нс%%|%%нас%%|%%мс%%|%%с%%|%%м%%|%%ч) (по умолчанию 0 с) |
| ''--update-failure-action'' | | Действие при сбое обновления («пауза»%%|%%»продолжить»%%|%%»откат») (по умолчанию «пауза») |
| ''--update-max-failure-ratio'' | | Частота отказов во время обновления (по умолчанию 0) |
| ''--update-monitor'' | | Длительность после каждого обновления задачи для отслеживания сбоев (ns%%|%%us%%|%%ms%%|%%s%%|%%m%%|%%h) (по умолчанию 5 с) |
| ''--update-order'' | | Порядок обновления («начало-сначала»%%|%%»сначала с остановкой») (по умолчанию «сначала с остановкой») |
| ''--update-parallelism'' | ''1'' | Максимальное количество одновременно обновляемых задач (0, чтобы обновить все сразу) |
| ''--user'', ''-u'' | | Имя пользователя или UID (формат: [:]) |
| ''--with-registry-auth'' | | Отправить данные проверки подлинности реестра агентам swarm |
| ''--workdir'', ''-w'' | | Рабочий каталог внутри контейнера |
==== Примеры ====
**создаем службу**
vagrant@server1:~$ docker service create --name redis redis:latest
vagrant@server1:~$ docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
fow99mp8tmr9 redis.1 redis:latest server2 Running Running 50 seconds ago
**смотрим логи**
vagrant@server1:~$ docker service logs redis
redis.1.fow99mp8tmr9@server2 | 1:C 10 Dec 2023 15:45:44.045 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis.1.fow99mp8tmr9@server2 | 1:C 10 Dec 2023 15:45:44.045 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis.1.fow99mp8tmr9@server2 | 1:C 10 Dec 2023 15:45:44.045 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=1, just started
redis.1.fow99mp8tmr9@server2 | 1:C 10 Dec 2023 15:45:44.045 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis.1.fow99mp8tmr9@server2 | 1:M 10 Dec 2023 15:45:44.046 * monotonic clock: POSIX clock_gettime
redis.1.fow99mp8tmr9@server2 | 1:M 10 Dec 2023 15:45:44.046 * Running mode=standalone, port=6379.
redis.1.fow99mp8tmr9@server2 | 1:M 10 Dec 2023 15:45:44.048 * Server initialized
redis.1.fow99mp8tmr9@server2 | 1:M 10 Dec 2023 15:45:44.048 * Ready to accept connections tcp
**Удалить службу**
vagrant@server1:~$ docker service rm redis
redis
vagrant@server1:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
**Масштабировать службу на другие ноды **
vagrant@server1:~$ docker service create --name redis redis
qjkv7nbmsk5ed6zs43vlw1b19
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
vagrant@server1:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
qjkv7nbmsk5e redis replicated 1/1 redis:latest
vagrant@server1:~$ docker service scale redis=2
redis scaled to 2
overall progress: 2 out of 2 tasks
1/2: running [==================================================>]
2/2: running [==================================================>]
verify: Service converged
vagrant@server1:~$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
qjkv7nbmsk5e redis replicated 2/2 redis:latest
можно сразу при создании сервиса
docker service create --name redis --replicas=3 redis