Как автоматически перезапустить контейнер Docker после перезагрузки в CoreOS?

предполагая, что демон Docker перезапускается автоматически любым init.d или systemd как процесс при перезапуске ОС, каков предпочтительный способ перезапуска одного или нескольких контейнеров Docker? Например, у меня может быть несколько веб-серверов за обратным прокси-сервером или сервером базы данных.

6 ответов


CoreOS использует systemd для управления длительными службами:


Если вы запустите демон с docker -d -r, Он перезапустит все контейнеры, которые были запущены до остановки демона. Это станет поведением по умолчанию в следующем выпуске.


что сработало для меня, это добавить --restart='always' к контейнеру {run-d ... команда}


документации я видел это docker's Host Integration docs которые немного свет на деталях, etc.

в основном, он предлагает запустить демон с -r=false и использование systemd (или выскочка, если вы используете что-то другое, кроме CoreOS).


для людей, которые хотят автоматически перезапустить контейнер docker, но не указали --restart флаг (по умолчанию "нет") во время его запуска вы можете использовать docker обновление команда для добавления одного из следующих трех других параметров:

  • on-failure
  • если-остановил
  • всегда

посмотреть этот пост за подробностями. У людей есть проблемы с always флаг перезапуска включен, можно использовать либо on-failure или .


использовать Restart и RestartSec чтобы заставить его работать:

# Restart after crash
Restart=on-failure
# Give the service 10 seconds to recover after the previous restart
RestartSec=10s

посмотреть документация.