изящная остановка нескольких контейнеров, опция 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 и заметить, что нет конечной точки для остановки или уничтожения множества контейнеров, только по одному на вызов.