Требуется ли для хранилища возможность перезаписи сигналов dumb-init, или будет достаточно встроенной реализации tini для докера?

Фон:

Я пытаюсь включить плагин, который требует glibc с hashicorp vault, работающий в контейнере. Официальный образ докера хранилища построен на альпийском образе ( Dockerfile). Я хочу создать образ на основе Debian, в котором нет пакета "dumb-init", соответствующего реализации hashicorp.

Docker-entrypoint.sh, предоставленный hashicorp, использует шебанг #!/usr/bin/dumb-init /bin/sh со следующим объяснением:

# Note above that we run dumb-init as PID 1 in order to reap zombie processes
# as well as forward signals to all processes in its session. Normally, sh
# wouldn't do either of these functions so we'd leak zombies as well as do
# unclean termination of all our sub-processes.

Согласно комментариям на этот вопрос от сопровождающего Tini,

Например, они [dumb-init] поддерживают перезапись сигнала, а Tini - нет, но Tini поддерживает подзадачи, а они нет. В целом, тем не менее, если вы ищете пожинать зомби и все, либо подойдет

(но, возможно, это изменилось...)

Если любой из них подойдет, я бы предпочел обновить Шебанг до #!/bin/sh и оставить обработку инициализации для использования --init флаг на вызове докера.

Вопрос:

Требуется ли для хранилища возможность перезаписи сигналов в dumb-init, или будет достаточно встроенной реализации tini для докера (начиная с Docker 1.13.0)?

0 ответов

Описание функциональности перезаписи сигнала dumb-init звучит как довольно особый случай. docker stop например, всегда будет посылать SIGTERM, а затем SIGKILL через 10 секунд; задержка настраивается, а конкретные сигналы - нет. Но, например, nginx примет SIGQUIT для "изящного" выключения (предположительно, позволяющего завершить существующие запросы), так что вы можете предпочесть docker stop вместо этого отправить SIGQUIT; вот для чего этот вариант.

Я не верю, что в Vault есть какая-то специальная обработка сигналов (единственное, что я могу найти в документации, это то, что отправка SIGUSR1 сбрасывает его данные телеметрии), так что вы должны быть в порядке с tini или чем-то еще docker run --init обеспечивает.

Другие вопросы по тегам