Политики перезапуска С помощью флага --restart при запуске Docker вы можете указать политику перезапуска для того, как контейнер должен или не должен быть перезапущен при выходе.
нет - не перезапускать контейнер, когда он выходит.
on-fail - Перезапустить контейнер, только если он выходит с ненулевым статусом выхода.
всегда - всегда перезапускать контейнер независимо от состояния выхода.
Вы также можете указать максимальное количество раз, которое Docker будет пытаться перезапустить контейнер при использовании политики сбоя. По умолчанию Docker всегда будет пытаться перезапустить контейнер.
$ sudo docker run --restart=always redis
Это запустит контейнер redis с политикой перезапуска всегда, так что если контейнер выйдет, Docker перезапустит его.
$ sudo docker run --restart=on-failure:10 redis
Это приведет к запуску контейнера redis с политикой перезапуска при сбое и максимальным числом перезапусков 10. Если контейнер redis выходит с ненулевым состоянием выхода более 10 раз подряд, Docker прекратит попытки перезапустить контейнер. Указание максимального предела перезапуска действительно только для политики при сбое.
unless-stopped
была добавлена другая политика с названием . Это действует так,always
но если контейнер остановлен и система перезагружена или демон docker перезапущен, контейнер не будет перезапущен. Смотрите здесь для хорошего описанияdocker
демон должен автоматически запуститься, чтобы поддержать это.У Docker есть эта страница, которая объясняет, как это сделать с помощью upstart и systemd. Я согласен, что это не совсем то, что нужно для Докера. Их решение - запустить
docker start
, что предполагает, что вы уже создали свой контейнер. Я бы подумал, что вы либо сделаетеdocker run --rm
сценарий upstart (рассматривая его как совершенно новый процесс и контейнер из образа), либо просто позволите демону docker перезапустить сами контейнеры при загрузке (как это будет по умолчанию, если вы ничего не сделаете ). Преимущество Upstart состоит в том, что он позволяет легко запускать / останавливать процессы, но вы получаете и запуск / остановку докера!Я думаю, что странно заставлять пользователя вручную создавать контейнер (со всеми правильными привязками порта / тома), прежде чем скрипт upstart будет работать.
источник
Почему нет?
Я пользуюсь супервизором для этого с большим успехом.
Используйте то, что вы знаете, используйте то, что работает, используйте то, что вы можете легко поддерживать и понимать.
источник
--rm
?--rm
это актуально здесь.docker
это заменаlxc
илиopenvz
которые имеютlxc.start.auto = 1
иvzctl set --onboot yes
. Также в ESXi и другие решения для виртуализации включена такая функция. Как и Лоуренс, я также не думаю, что такая функция автозапуска должна быть реализована для конкретного дистрибутива, потому что пользователь докера должен иметь возможность решать одну и ту же проблему с одинаковыми знаниями на каждой платформе.