==== 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