Предполагается, что демон Docker автоматически перезагружается любым процессом init.d или systemd, когда ОС перезагружается, что является предпочтительным способом перезапуска одного или нескольких контейнеров Docker? Например, у меня может быть несколько веб-серверов за обратным прокси-сервером или сервером базы данных.Как автоматически перезапустить контейнер Docker после перезагрузки в CoreOS?
ответ
CoreOS использует Systemd управлять долго запущенными службами:
Поскольку я перемещаю все свои услуги для CoreOS это похоже на лучший способ пойти сейчас. – Richard
@ Рихард. Даже если это так, вы должны по-прежнему считать решение creack лучшим ответом (более полезным для людей в других операционных системах). – michielbdejong
Ответ Марка не ошибается. Я имел в виду CoreOS (хотя я не упоминал об этом конкретно), это подразумевалось systemd и initd. С тех пор появились новые [методы обновления] (https://coreos.com/docs/cluster-management/setup/update-strategies/), которые работают совместно. – Richard
, если вы запустите демон с docker -d -r
, он будет перезагружен все контейнеры, которые были запущены до демонов останавливали. Это станет поведением по умолчанию в следующей версии.
, так что это означает, что ОС хоста перезагрузилась с запущенными контейнерами или, возможно, сбой системы? В первом случае это означает, что докер подключен к различным сигналам выключения/перезагрузки? – Richard
Когда система перезагружается, есть вероятность, что контейнер будет убит до докера. Если это произойдет, контейнер не будет перезапущен. Docker не подключен к сигналам выключения/перезагрузки. – creack
Это был ранее правильный ответ, но после обзора он оказался в ошибке. (a) в нем отсутствует ACTION, который, вероятно, был RUN, однако '-r' недоступен. – Richard
Единственная документация которую я видел, Docker's Host Integration docs которые немного света на детали и т.д.
В основном, это говорит о запуске демона с -r=false
и использованием Systemd (или выскочка, если вы используете что-то другое, чем CoreOS).
То, что сработало для меня, чтобы добавить --restart='always'
в контейнер {запустить -d ...} Команда
В соответствии с моим комментарием к исходному вопросу, я не знаю, как изменить это на изображении, когда-то начатое. Поэтому, если я хочу временно отключить функцию перезапуска, и изначально я не диктовал «on-failure», я не знаю, как остановить автоматический перезапуск контейнера :(Это больно, когда я использовал порт, который мне нужен для другого изображения ... – tjborromeo
Да, у меня была проблема с командой --restart = 'always', так как, когда я, наконец, хотел диктовать _not_ авто-перезагрузку этого конкретного контейнера, я не мог жизнь меня выясняет, как отключить этот параметр, не удаляя контейнер! – tjborromeo
Restart
Используется и RestartSec
, чтобы сделать его работу:
# Restart after crash
Restart=on-failure
# Give the service 10 seconds to recover after the previous restart
RestartSec=10s
Посмотреть the documentation.
Для людей хотят автоматического перезапуска Docker контейнер, но не уточнил, --restart
флаг (по умолчанию «нет») во время работы, вы можете использовать Docker update команду, чтобы добавить один из следующих трех вариантов:
- на провал
- если-не остановленного
- всегда
См this post для деталей. У людей есть проблемы с флагом перезагрузки always
, можете рассмотреть возможность использования опции on-failure
или unless-stopped
.
- 1. Как перезапустить приостановленный Docker контейнер
- 2. docker-compose контейнер перезагрузки, если служба мертва
- 3. Как перезапустить командный файл после перезагрузки системы
- 4. не удается остановить или перезапустить Docker контейнер
- 5. Установите докер на контейнер CoreOS
- 6. Как перезапустить существующий контейнер Docker в режиме перезапуска = «всегда»?
- 7. Docker Compose to CoreOS
- 8. Java JVM на Docker/CoreOS
- 9. Как перезапустить перезапуск задачи после перезагрузки страницы?
- 10. Как перезапустить будильник после перезагрузки телефона?
- 11. CoreOS Fleet не смог получить контейнер
- 12. начиная calicoctl контейнер на coreos
- 13. Docker воссоздает каталоги на хосте после перезагрузки
- 14. Запуск перезагрузки контейнера Docker с помощью Docker Compose
- 15. VMWare VIC (Photon OS + Docker) против CoreOS + Docker
- 16. Перезапустить службу WCF после перезагрузки сервера
- 17. CoreOS Fleet, link redundant Контейнер для докеров
- 18. Tomcat необходимо перезапустить после перезагрузки базы данных
- 19. Как сохранить контейнер Docker после запуска?
- 20. Как автоматически перезапустить программу после ее закрытия
- 21. Как перезапустить один контейнер с докер-Compose
- 22. с использованием gcloud docker client на coreos
- 23. Как автоматически перезапустить сервер узлов?
- 24. Docker: добавьте политику перезагрузки в уже созданный контейнер
- 25. Флот не может запускать контейнер реестра Docker
- 26. Как перезапустить демон соляной мины автоматически после перезапуска машины?
- 27. Файл ядра Coreos Systemd - держите контейнер в рабочем состоянии
- 28. Как изменить docker work_dir на CoreOS
- 29. как SSH Docker контейнер
- 30. Docker как создать контейнер
Хорошо, меня действительно интересует полная противоположная проблема: Я сказал, что restart = всегда для контейнера, который, казалось, работал, а теперь, после перезапуска демона, я не могу найти способ отключить эту функцию автоматического перезапуска для этого конкретного контейнера! – tjborromeo
DOH! Я прочитал, что команда CoreOS предпочитает использовать флот или systemd для реализации перезапуска. – Richard
Yup, похоже, означает, что я не должен использовать встроенные функции докера для автоматического перезапуска в любом случае, как и при любой настройке, которую вы планируете управлять, вам нужна гибкость в определении того, когда контейнер должен перераспределять (и когда демон docker должен перезапустить). Это немного усложняется тем фактом, что команда 'docker inspect', похоже, подразумевает, что атрибут перезапуска является частью и посылкой к изображению, когда-то запущенному (подобно открытым портам). Таким образом, как только вы определяете атрибут автоматического перезапуска, вы не можете изменить свое мнение :( – tjborromeo