我在systemd
服务器中使用docker
编写了一个dcoker-compose
脚本来启动ubuntu 16.04 LTS
个容器。
这是脚本文件/etc/systemd/system/swoop.mongo.service
[Unit]
Description=Swoop MongoDb Server container
Requires=docker.service
After=docker.service
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/docker-compose -f /var/www/swoop/docker-compose.yml up -d mongo3 mongo2 mongo1 mongosetup
Restart=always
RestartSec=10s
Type=notify
NotifyAccess=all
[Install]
WantedBy=local.target
当我使用sudo systemctl start swoop.mongo.service
启动服务时效果很好。
当我重新启动服务器时,它失败并且服务的状态变为非活动状态。
$ systemctl status swoop.app.service
● swoop.app.service - Swoop App Server container
Loaded: loaded (/etc/systemd/system/swoop.app.service; disabled; vendor preset: enabled)
Active: inactive (dead)
答案 0 :(得分:1)
--restart=always
命令有docker run
选项,如果您在运行容器时没有一些特殊要求,我建议您这样做。
相同的概念适用于docker-compose
:
restart: always
策略:
no
:退出时不要自动重启容器。这是
默认。on-failure[:max-retries]
:仅在容器以a退出时重新启动
非零退出状态。 (可选)限制重新启动重试次数
Docker守护程序尝试。always
:无论退出状态如何,始终重启容器。
当您指定always时,Docker守护程序将尝试重新启动
容器无限期。容器也将始终开始
守护进程启动,无论容器的当前状态如何。unless-stopped
:无论退出如何,始终重启容器
状态,但如果容器有,则不要在守护程序启动时启动它
之前已经处于停止状态。现在,就systemd
服务而言,您需要启用该服务,以便在reboots
之后自动启动。
sudo systemctl enable <service name>
更新
您需要将WantedBy=local.target
替换为WantedBy=multi-user.target
multi-user.target:多用户,非图形。用户通常可以登录 通过多个控制台或通过网络。