You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置systemctl启动Docker容器时提示容器不存在的问题求助

问题:Docker容器vault_orthanc通过systemctl配置开机自启失败

报错信息

Mar 08 14:28:22 humerus systemd[1]: Started Orthanc container.
Mar 08 14:28:22 humerus docker[9389]: Error response from daemon: No such container: vault_orthanc
Mar 08 14:28:22 humerus docker[9389]: Error: failed to start containers: vault_orthanc
Mar 08 14:28:22 humerus systemd[1]: vault_orthanc.service: Main process exited, code=exited, status=1/FAILURE
Mar 08 14:28:22 humerus systemd[1]: vault_orthanc.service: Failed with result 'exit-code'.

操作步骤

  1. 创建Docker容器:
docker run --name=vault_orthanc --shm-size=2g -p 4242:4242 -p 8042:8042 vault-orthanc

执行docker ps显示容器正常运行:

CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS         PORTS                                                                                  NAMES
8828f32c8411   vault-orthanc   "Orthanc /etc/orthan…"   23 minutes ago   Up 23 minutes   0.0.0.0:4242->4242/tcp, :::4242->4242/tcp, 0.0.0.0:8042->8042/tcp, :::8042->8042/tcp   vault_orthanc
  1. 创建systemd服务文件:
nano /etc/systemd/system/vault_orthanc.service

文件内容:

[Unit]
Description=Orthanc container
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a vault_orthanc
ExecStop=/usr/bin/docker stop -t 2 vault_orthanc

[Install]
WantedBy=default.target
  1. 启用并启动服务:
sudo systemctl enable vault_orthanc.service
sudo systemctl start vault_orthanc.service

解决方案

1. 确认容器是否存在

先检查容器是否真的存在(docker ps仅显示运行中容器,docker ps -a显示所有状态容器):

docker ps -a | grep vault_orthanc
  • 若无输出:说明容器已被删除,重新创建容器时建议添加--restart=always参数,让Docker自身管理开机自启:
    docker run --name=vault_orthanc --shm-size=2g -p 4242:4242 -p 8042:8042 --restart=always vault-orthanc
    
    若坚持用systemd,重新创建容器后再启动服务即可。
  • 若有输出:说明容器存在,继续下一步排查。

2. 检查容器名称拼写与大小写

确保vault_orthanc.service文件中ExecStart和ExecStop里的容器名称与实际名称完全一致(Docker容器名称区分大小写)。

3. 验证Docker命令路径

检查系统中Docker命令的实际路径:

which docker

若输出不是/usr/bin/docker,修改服务文件中的命令路径为实际路径,例如:

ExecStart=/usr/local/bin/docker start -a vault_orthanc
ExecStop=/usr/local/bin/docker stop -t 2 vault_orthanc

修改后重新加载配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart vault_orthanc.service

4. 优化systemd服务依赖

修改服务文件的[Unit]部分,增加对docker.socket的依赖,确保Docker完全就绪后再启动容器:

[Unit]
Description=Orthanc container
Requires=docker.service docker.socket
After=docker.service docker.socket

重新加载配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart vault_orthanc.service

5. 排查权限问题

若创建容器时用的是非root用户,可在[Service]部分添加用户指定:

[Service]
Restart=always
User=your_username
ExecStart=/usr/bin/docker start -a vault_orthanc
ExecStop=/usr/bin/docker stop -t 2 vault_orthanc

替换your_username为实际用户名,之后重新加载配置并重启服务。


内容的提问来源于stack exchange,提问作者Philipp Johannsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:05:36