Ответ 1
CoreOS использует systemd для управления долгосрочными службами:
Предполагая, что демон Docker автоматически перезагружается любым процессом init.d или systemd, когда ОС перезагружается, что является предпочтительным способом перезапуска одного или нескольких контейнеров Docker? Например, у меня может быть несколько веб-серверов за обратным прокси-сервером или сервером базы данных.
CoreOS использует systemd для управления долгосрочными службами:
если вы запустите демон с помощью docker -d -r
, он перезапустит все контейнеры, которые были запущены до того, как демон остановился.
Это станет поведением по умолчанию в следующей версии.
Что сработало для меня - добавить --restart='always'
в команду container {run -d...}
Для людей, которые хотят автоматически перезапустить контейнер докеров, но не указали флаг --restart
(по умолчанию "нет" ) во время его запуска, вы можете использовать docker update, чтобы добавить одну из следующих трех других опций:
Подробнее см. этот пост. У людей проблемы с always
флажком перезапуска, можно рассмотреть возможность использования опции on-failure
или unless-stopped
.
Единственная документация, которую я видел, - это Документы по интеграции хоста Docker, которые немного освещают детали и т.д.
По сути, он предлагает запустить демон с -r=false
и использовать systemd (или использовать upstart, если вы используете что-то отличное от CoreOS).
Используется Restart
и RestartSec
, чтобы заставить его работать:
# Restart after crash
Restart=on-failure
# Give the service 10 seconds to recover after the previous restart
RestartSec=10s
Просмотрите документацию.