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

如何在systemd环境下为Docker daemon传递-H参数?

解决Docker通过-H指定Hosts启动失败的问题

问题本质

你遇到的两个启动错误核心原因一致:Docker不允许同时通过命令行参数和配置文件指定hosts,且systemd管理的Docker默认依赖socket activation机制。

  • 直接运行dockerd加-H参数报错,是因为没有systemd提供的对应socket资源;
  • 修改daemon.json后启动失败,是因为systemd的Docker服务文件中仍保留-H fd://参数,与配置文件的hosts配置冲突。

解决步骤

  1. 修改Docker的systemd服务配置

    • 打开默认的Docker systemd服务文件:
      vi /lib/systemd/system/docker.service
      
    • 找到ExecStart行,删除所有-H开头的参数,修改后内容如下:
      ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536
      
    • 若你的Docker服务配置存放在/etc/systemd/system/docker.service.d/目录的自定义文件中,同样需要检查并删除其中的-H参数。
  2. 确认daemon.json配置有效

    • 确保/etc/docker/daemon.json的内容如下(文件不存在则直接创建):
      {
          "hosts": ["fd://", "tcp://0.0.0.0:2376"]
      }
      
    • 设置正确的文件权限:
      chown root:root /etc/docker/daemon.json
      chmod 644 /etc/docker/daemon.json
      
  3. 重载配置并重启Docker

    • 执行以下命令使修改生效:
      systemctl daemon-reload
      systemctl restart docker
      
  4. 验证配置结果

    • 查看Docker进程参数,确认包含指定的hosts:
      ps aux | grep dockerd
      
    • 检查2376端口是否正常监听:
      ss -tulpn | grep 2376
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:09:32