У меня есть очень конкретный вопрос с выполнением контейнера Докера на начальной загрузке с помощью systemd.
Контейнер запускается и останавливается успешно со следующими сценариями:
запустить-container.sh
#!/usr/bin/env bash
sleep 5
docker start container_name
остановиться-container.sh
#!/usr/bin/env bash
sleep 5
docker stop container_name
Однако, когда я настраиваю следующий сервис с помощью systemd, он не работает успешно:
[Unit]
Description=Docker Container
After=network.target
After=systemd-user-sessions.service
After=network-online.target
After=multi-user.target
[Service]
User=root
Type=simple
ExecStart=/home/seed/scripts/start-container.sh
ExecStop=/home/seed/scripts/stop-container.sh
TimeoutSec=60
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
[Install]
WantedBy=default.target
Полные пути являются ключом к успеху в сценариях оболочки.
Для почему бы не создания его без сценариев корневого каталога (который не является хорошей практикой в сервисах):
[Unit]
Description=Docker Container
After=network.target
After=systemd-user-sessions.service
After=network-online.target
After=multi-user.target
[Service]
User=root
Type=simple
ExecStart=/usr/bin/docker start -a container_name
ExecStop=/usr/bin/docker stop -t 5 container_name
TimeoutSec=60
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
[Install]
WantedBy=default.target
Счастливый dockering!