Я вижу, что Docker добавил нечто, называемое перезапуском политик, для обработки перезапуска контейнеров в случае, например, перезагрузки.
Хотя это очень полезно, я вижу, что команда restart policy просто работает, docker run
а не работает docker start
. Итак, мой вопрос:
Есть ли способ добавить перезапускающие политики в контейнер, который уже был создан в прошлом?
Ответы:
В последних версиях Docker (по состоянию на 1.11) у вас есть
update
команда:источник
docker update --restart always <container>
docs.docker.com/engine/admin/start-containers-automaticsdocker update
принимает несколько идентификаторов контейнеров, так что вообще не нужноxargs
, просто сделайтеdocker update --restart=always $(docker ps -q)
.Существует два подхода к изменению RestartPolicy:
docker commit
ваш контейнер как новое изображение, остановите и запустите текущий контейнер и запустите новый контейнер с изображением.источник
docker update
позволяет изменить политику перезапуска только на 1.11+Использование
--restart=always
политики будет обрабатывать перезапуск существующих контейнеров в случае перезагрузки.Проблема заключается в том, что если есть несколько контейнеров с
--restart=always
при запуске образа новой версии , как описано в докер - как отключить функцию автоматического перезапуска на контейнер? ,Поэтому в этом случае лучше выбрать другой вариант: --restart, если политика не остановлена .
Эта политика не конфликтует
docker run --rm
, но , как описано в Докер документации :Поэтому при использовании этой
--restart unless-stopped
политики, чтобы убедиться, что перезапуск работает в случае, если он случайно остановится при закрытии терминала, выполните один раз в другом терминале, как показано ниже:Дождитесь окончания процесса уничтожения в предыдущей оболочке, затем закройте его и просто выйдите ( не выходите ).
И еще раз проверьте в оставшемся терминале, работает ли контейнер:
Если он все еще работает, вы можете безопасно перезагрузить компьютер и снова проверить, что приложение перезапускается, и увидеть, что ваш докер чист, без использования нескольких контейнеров.
источник