Использование --restart=always
политики будет обрабатывать перезапуск существующих контейнеров в случае перезагрузки.
Проблема заключается в том, что если есть несколько контейнеров с --restart=always
при запуске образа новой версии , как описано в докер - как отключить функцию автоматического перезапуска на контейнер? ,
Попытка автоматического удаления контейнера, если он существует с помощью опции put docker run --rm
, также будет проблемой с --restart=always
политикой, поскольку они конфликтуют друг с другом .
$ docker run --rm --restart always <image>
Conflicting options: --restart and --rm
Поэтому в этом случае лучше выбрать другой вариант: --restart, если политика не остановлена .
$ docker run --rm --restart unless-stopped <image>
Эта политика не конфликтуетdocker run --rm
, но , как описано в Докер документации :
Это похоже на то --restart=always
, что при остановке контейнера (вручную или иным образом) он не перезапускается даже после перезапуска демона Docker.
Поэтому при использовании этой --restart unless-stopped
политики, чтобы убедиться, что перезапуск работает в случае, если он случайно остановится при закрытии терминала, выполните один раз в другом терминале, как показано ниже:
$ docker ps
$ docker restart <container>
Дождитесь окончания процесса уничтожения в предыдущей оболочке, затем закройте его и просто выйдите ( не выходите ).
И еще раз проверьте в оставшемся терминале, работает ли контейнер:
$ docker ps
Если он все еще работает, вы можете безопасно перезагрузить компьютер и снова проверить, что приложение перезапускается, и увидеть, что ваш докер чист, без использования нескольких контейнеров.