Введение
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
Заключение
Теперь ваши контейнеры будут автоматически запускаться после перезагрузки сервера, и вы не пропустите важные сервисы.