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

Ubuntu22.04下使用systemctl无法启动Docker服务的问题求助

解决Docker通过systemctl启动失败的问题

问题原因

Docker的systemd服务配置文件(默认路径为/lib/systemd/system/docker.service)中,ExecStart参数已经指定了监听套接字(比如-H unix:///var/run/docker.sock),而你在/etc/docker/daemon.json里又配置了hosts字段——Docker守护进程只能通过一种方式设置监听地址,两种配置同时存在会触发冲突,导致systemctl启动失败。手动执行dockerd时没有加载systemd的默认参数,所以能正常运行。

解决方法

方法一:修改systemd服务文件,移除默认监听参数

  1. 编辑Docker的systemd服务文件:
    sudo nano /lib/systemd/system/docker.service
    
  2. 找到ExecStart行,删除末尾的-H fd://或-H unix:///var/run/docker.sock参数,修改后示例:
    ExecStart=/usr/bin/dockerd
    
  3. 重新加载systemd配置并重启服务:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

方法二:将监听配置移到systemd参数,保留daemon.json其他设置

  1. 编辑/etc/docker/daemon.json,删除hosts字段,修改后内容:
    {
       "dns": ["8.8.4.4","8.8.8.8"]
    }
    
  2. 编辑Docker的systemd服务文件:
    sudo nano /lib/systemd/system/docker.service
    
  3. 修改ExecStart行,添加TCP和Unix套接字参数:
    ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://localhost:2375
    
  4. 重新加载systemd配置并重启服务:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

验证

执行以下命令确认服务状态:

sudo systemctl status docker

也可以测试TCP套接字是否正常工作:

curl http://localhost:2375/version

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:55:25