Будет ли контейнер Docker автоматически запускаться после перезагрузки сервера?

«Будет ли контейнер Docker автоматически запускаться после перезагрузки сервера?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, по умолчанию контейнеры не перезапускаются автоматически. Для этого необходимо явно указать политику перезапуска с помощью флага --restart.

Как настроить автоматический перезапуск:

  1. При создании контейнера:
    docker run -d --name my-app --restart unless-stopped my-app-image
  2. Для существующего контейнера:
    docker update --restart unless-stopped my-app

Доступные политики перезапуска:

  • no (по умолчанию) — не перезапускать.
  • on-failure[:max-retries] — перезапускать только при завершении с ошибкой (с необязательным лимитом попыток).
  • always — всегда перезапускать, даже если контейнер был остановлен вручную (будет перезапущен демоном Docker).
  • unless-stopped — всегда перезапускать, кроме случаев, когда контейнер был явно остановлен пользователем (рекомендуемый вариант).

Важно: Для работы этой политики необходимо, чтобы сам Docker-демон запускался при загрузке системы:

sudo systemctl enable docker