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

Docker远程配置启动dockerd报错:无/etc/docker/daemon.json访问权限

解决Docker守护进程启动时的权限拒绝问题

我来帮你拆解下这个问题——核心原因其实很直白:哪怕你把用户加入了docker用户组,启动dockerd(Docker守护进程)本身依然需要root权限。docker组的权限只是让普通用户能和已经运行的dockerd通信(比如执行docker run这类命令),但守护进程本身要访问系统级资源(比如绑定2376端口、读取敏感系统路径),普通用户根本没有这个权限,这也是你之前修改daemon.json内容、权限甚至删除文件都没用的原因。

下面是具体的解决方案:

1. 临时启动:用sudo直接执行命令

既然启动dockerd需要root权限,直接给命令加上sudo就能绕过权限问题:

sudo dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=0.0.0.0:2376

2. 永久配置:通过systemd管理(推荐)

手动敲命令启动不够稳定,更规范的方式是把TLS配置写入daemon.json,然后用systemd管理Docker服务,步骤如下:

步骤1:创建/修改daemon.json

用sudo权限编辑配置文件,记得把证书路径替换成你实际的存放路径:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "tls": true,
  "tlscacert": "/你的证书目录/ca.pem",
  "tlscert": "/你的证书目录/server-cert.pem",
  "tlskey": "/你的证书目录/server-key.pem",
  "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"]
}
EOF

步骤2:修复文件权限

确保daemon.json的所有权和权限符合系统要求(root用户拥有,权限644):

sudo chown root:root /etc/docker/daemon.json
sudo chmod 644 /etc/docker/daemon.json

步骤3:重启Docker服务

用systemd重启Docker,让新配置生效:

sudo systemctl restart docker

3. 验证配置是否生效

你可以用Docker客户端测试远程连接是否正常(本地测试也适用):

docker --tlsverify --tlscacert=ca.pem --tlscert=client-cert.pem --tlskey=client-key.pem -H=你的服务器IP:2376 info

如果返回Docker的系统信息,说明TLS配置已经成功生效了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:38