Сервис запускающий контейнер.
Полезно, когда необходимо обеспечить функционал сервиса для привилегированного контейнера.

Vadim Surkov 2208fa5e61 Revert docker stop command in entrypoint 6 år sedan
Dockerfile 66208bdb32 Первая работающая версия 6 år sedan
README.md 9693d59fa8 Обновить 'README.md' 6 år sedan
docker-entrypoint.sh 2208fa5e61 Revert docker stop command in entrypoint 6 år sedan

README.md

container-run

Образ, обеспечивающий функционал сервиса для классического docker контейнера. Полезно, когда необходимо обеспечить функционал сервиса для привилегированного контейнера.

Создание сервиса. Вместо docker run, как при создании контейнера следует использовать docker service create --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock --name <имя-сервиса> dev-registry.infoclinica.ru:5000/container_run:1

Пример создания сервиса для контейнера nginx-gost:

docker service create \
  --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \
  --name nginx-gost dev-registry.infoclinica.ru:5000/container_run:1 \
  -p 443:443 -p 80:80 --network=proxy \
  --privileged --security-opt seccomp=unconfined \
  --tmpfs /run --tmpfs /run/lock \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  -e "ADMIN_LAB=dev-admin-lab.infoclinica.lan" \
  -e "ADMIN_WEB=dev-admin-web.infoclinica.lan" \
  -e "NODE_LAB=node-lab.infoclinica.lan" \
  -e "NODE_WEB=node-web.infoclinica.lan" \
  dev-registry.infoclinica.ru:5000/nginx-gost:10

Так как параметры рабочего контейнера переданы как "командная строка" сервиса, то обновлять версию образа рабочего контейнера нужно через изменение "командной строки" при помощи директивы --args команды docker service update. Пример изменения версии nginx-gost:10 на nginx-gost:11 :

docker service update \
  --args "-p 443:443 -p 80:80 --network=proxy \
  --privileged --security-opt seccomp=unconfined \
  --tmpfs /run --tmpfs /run/lock \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  -e "ADMIN_LAB=dev-admin-lab.infoclinica.lan" \
  -e "ADMIN_WEB=dev-admin-web.infoclinica.lan" \
  -e "NODE_LAB=node-lab.infoclinica.lan" \
  -e "NODE_WEB=node-web.infoclinica.lan" \
  dev-registry.infoclinica.ru:5000/nginx-gost:11" \
  nginx-gost

Для отката изменений до предыдущего состояния, достаточно стандартной команды:

docker service rollback nginx-gost

Для увеличения количества запущенных копий, достаточно стандартной команды:

docker service scale nginx-gost=3

Чтобы удалить контейнер с службой, достаточно:

docker service rm nginx-gost