изящная остановка нескольких контейнеров, опция docker stop `--time` для каждого контейнера или для всех контейнеров?

Я пытаюсь изящно остановить все контейнеры. Поэтому я хочу дать каждому контейнеру 60 секунд. Я вижу, что вы можете:

      docker stop --time=60 $(docker container ls -q)

это --time=60 для каждого контейнера или все контейнеры получают только 60 секунд?

  • например: если одному контейнеру требуется 59 секунд для остановки ... означает ли это, что следующему контейнеру остается только 1 секунда для остановки?
  • если все контейнеры получают 60 секунд ... тогда я сделаю bash for loop и сделаю docker stop для каждого контейнера ... чтобы каждый из них получил 60 секунд.

1 ответ

Параметр --time=60 считаются для каждого контейнера.

Клиент Docker выполняет HTTP-запросы под капотом. Когда вы передаете более одного аргумента, например:

      docker stop --time=60 $(docker container ls -q)

Клиент Docker отправит столько запросов, сколько значений вернет ваша оболочка. docker container ls -q, каждый запрос будет иметь --time для своих.

Теперь, когда мы знаем, что докер выполняет запросы к «docker api», мы можем просмотреть документацию по API и заметить, что нет конечной точки для остановки или уничтожения множества контейнеров, только по одному на вызов.

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