Назад | Перейти на главную страницу

Для чего на самом деле используется HEALTHCHECK при запуске Docker в режиме роя?

Мне сложно понять, что HEALTHCHECK действительно используется при запуске Docker в режиме роя.

Одно место предлагает что Docker будет начать сначала задача, которая считается нездоровой. Другое место объясняет, что Docker будет прекратить отправку трафика к нездоровым задачам. Документация Docker сам только объясняет, что HEALTHCHECK директива есть, и как ее настроить. Он не пытается объяснить, что происходит, когда задача перестает работать.

Другими словами, я изо всех сил пытаюсь найти четкое и достоверное объяснение того, что HEALTCHECK действительно делает.

Кроме того, глядя на Докер REST APIэтот конкретный фрагмент данных (является ли задача работоспособным или нет) даже не предоставляется для задач (хотя он предоставляется для контейнеров). Это затрудняет использование этой метрики для мониторинга Docker Swarm, поэтому мне не кажется, что это основная цель метрики.

Что на самом деле происходит, когда задача перестает работать при запуске Docker в режиме роя?

Вы настраиваете проверки работоспособности так же, как предлагает ваша первая ссылка. Все эти способы сообщают докеру, какую команду запускать, как часто ее запускать и т. Д.

Если вы используете docker run чтобы запустить контейнер, пользовательский интерфейс покажет нездоровый, когда проверки работоспособности не пройдут, но докер ничего не сделает с контейнером. Это зависит от вас или какого-либо решения для мониторинга более высокого уровня.

Если вы используете docker service create (или docker stack deploy) для создания службы Swarm и эта проверка работоспособности завершится ошибкой, она остановит / убьет задачу (контейнер) и перепланировит новую задачу, чтобы заменить эту реплику службы. Во время остановки / уничтожения (он пытается изящно остановить его, но завершает работу через 10 секунд, как и все контейнеры докеров), Swarm прекратит накладывать входящий трафик на эту задачу, как и для всех задач остановки.