Как настроить автозапуск Docker контейнеров после перезагрузки сервера

Введение

Docker отлично подходит для запуска приложений и сервисов, но после перезагрузки сервера контейнеры по умолчанию не запускаются автоматически. Это неудобно, особенно для серверов, которые должны работать 24/7.

В этой статье покажу, как настроить автоматический запуск Docker контейнеров после старта системы несколькими простыми способами.

1. Использование политики рестарта контейнера

Самый простой способ — задать политику рестарта при запуске контейнера:

docker run -d --restart unless-stopped your_image

Опции:

  • no — не перезапускать контейнер (по умолчанию)
  • on-failure — перезапускать при ошибках
  • always — всегда перезапускать
  • unless-stopped — как always, но не после остановки вручную

2. Изменение политики уже запущенного контейнера

Для существующего контейнера:

docker update --restart unless-stopped container_name

3. Автозапуск нескольких контейнеров с docker-compose

Добавьтев docker-compose.yml для каждого сервиса:

restart: unless-stopped

Пример:

version: '3'
services:
  web:
    image: nginx
    restart: unless-stopped

Запускайте через:

docker-compose up -d

4. Проверка политик рестарта

docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" container_name

5. Автозапуск Docker-сервиса systemd

Если нужна более тонкая настройка, можно сделать systemd unit:

Создайте файл /etc/systemd/system/docker-container.service:

[Unit]
Description=Docker Container
After=docker.service
Requires=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a container_name
ExecStop=/usr/bin/docker stop -t 10 container_name

[Install]
WantedBy=multi-user.target

Активируйте:

sudo systemctl daemon-reload
sudo systemctl enable docker-container.service
sudo systemctl start docker-container.service

Заключение

Теперь ваши контейнеры будут автоматически запускаться после перезагрузки сервера, и вы не пропустите важные сервисы.