gpt4 book ai didi

service - Docker 和 systemd - 服务在 10 秒后停止

转载 作者:行者123 更新时间:2023-12-02 18:25:01 24 4
gpt4 key购买 nike

当 Docker 容器由 systemd 启动时,我无法让它保持运行。当我用 sudo docker start containername 手动启动它时,它可以毫无问题地保持运行,但是当它通过 systemd 使用 sudo systemctl start containername 启动时,它会保持 10 秒然后神秘地死亡,在系统日志中留下类似以下的消息:

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 (attach) 参数,如 in the documentation 所述在 systemd 脚本中使用时。我认为这是因为它默认 fork 到后台,尽管 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

关于service - Docker 和 systemd - 服务在 10 秒后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29034381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com