Docker 和 systemd - 服务在 10 秒后停止
Docker and systemd - service stopping after 10 seconds
我无法让 Docker 容器在由 systemd 启动时保持运行。当我使用 sudo docker start containername
手动启动它时,它会毫无问题地保持运行,但是当它通过 systemd 使用 sudo systemctl start containername
启动时,它会保持运行 10 秒然后神秘地死掉,在 syslog 中留下如下消息:
Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="POST /v1.17/containers/containername/stop?t=10"
Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="+job stop(containername)"
我假设它是 systemd 终止进程,但我无法弄清楚为什么会发生这种情况。 systemd 单元文件 (/etc/systemd/system/containername.service) 非常简单,如下所示:
[Unit]
Description=MyContainer
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/bin/docker start containername
ExecStop=/usr/bin/docker stop containername
[Install]
WantedBy=multi-user.target
Docker 在启动时启动良好,看起来它甚至启动了 docker 容器,但无论是启动还是手动,它都会在恰好 10 秒后退出。收到帮助,感激不尽!
解决方案:启动命令似乎需要 -a(附加)参数,如所述in the documentation when used in a systemd script. I assume this is because it by default forks to the background, although the systemd expect daemon
feature似乎无法解决问题。
来自 docker-start
联机帮助页:
-a, --attach=true|false
Attach container's STDOUT and STDERR and forward all signals to the process. The default is false.
整个systemd脚本变成:
[Unit]
Description=MyContainer
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/bin/docker start -a containername
ExecStop=/usr/bin/docker stop containername
[Install]
WantedBy=multi-user.target
我无法让 Docker 容器在由 systemd 启动时保持运行。当我使用 sudo docker start containername
手动启动它时,它会毫无问题地保持运行,但是当它通过 systemd 使用 sudo systemctl start containername
启动时,它会保持运行 10 秒然后神秘地死掉,在 syslog 中留下如下消息:
Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="POST /v1.17/containers/containername/stop?t=10"
Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="+job stop(containername)"
我假设它是 systemd 终止进程,但我无法弄清楚为什么会发生这种情况。 systemd 单元文件 (/etc/systemd/system/containername.service) 非常简单,如下所示:
[Unit]
Description=MyContainer
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/bin/docker start containername
ExecStop=/usr/bin/docker stop containername
[Install]
WantedBy=multi-user.target
Docker 在启动时启动良好,看起来它甚至启动了 docker 容器,但无论是启动还是手动,它都会在恰好 10 秒后退出。收到帮助,感激不尽!
解决方案:启动命令似乎需要 -a(附加)参数,如所述in the documentation when used in a systemd script. I assume this is because it by default forks to the background, although the systemd expect daemon
feature似乎无法解决问题。
来自 docker-start
联机帮助页:
-a, --attach=true|false
Attach container's STDOUT and STDERR and forward all signals to the process. The default is false.
整个systemd脚本变成:
[Unit]
Description=MyContainer
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/bin/docker start -a containername
ExecStop=/usr/bin/docker stop containername
[Install]
WantedBy=multi-user.target