Мы запускаем режим Docker Swarm в производстве, имея 4 узла, 3 из которых имеют статус менеджера. Мы заметили, что раз в несколько дней все контейнеры на одном из хостов перезапускаются.
В то время я заглянул в системный журнал и увидел следующие сообщения (повторяющиеся для всех контейнеров, запланированных на этом хосте):
Jan 26 07:26:14 HOST0 dockerd[13104]: time="2019-01-26T07:26:14.954777646Z" level=warning msg="failed to deactivate service binding for container service_container.1.lhc0gejxgb8y340bg9o2wfcm2" error="No such container: service_container.1.lhc0gejxgb8y340bg9o2wfcm2" module=node/agent node.id=2g08blfds9z26ja2ou06pv2zl
Перед этим есть несколько сообщений, связанных с членством в роях, но они также происходят без проблем и в любом случае находятся на уровне level = info.
Важно отметить, что на определенных хостах у нас есть одноэкземплярные сервисы с отслеживанием состояния, такие как базы данных.
Пока мне нужно понять, что запускает воссоздание сервисов и как этого избежать. Есть ли что-нибудь особенное, с чего я буду искать журналы для начала?
Заранее большое спасибо!
Предлагаю начать с задач перезапущенного сервиса. В нем должна быть указана причина выхода и код выхода процесса PID 1 контейнера.
docker service ps $SERVICE_NAME
перечислит последние 5 задач обслуживания (или любой другой установленный предел истории).
Возьмите ID завершенной задачи и используйте docker inspect $TASK_ID
чтобы узнать подробности.