docker 配置

发布于:2025-07-07 ⋅ 阅读:(19) ⋅ 点赞:(0)

根据错误日志,关键问题是 Docker 无法通过 systemd 的 socket 激活机制找到监听套接字。以下是针对性解决方案:

1. 修改 Docker 服务配置

cat > /etc/systemd/system/docker.service <<'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=simple  # 修改为 simple 类型
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

[Install]
WantedBy=multi-user.target
EOF

关键修改点:

  • Type=notify 改为 Type=simple
  • 明确指定 socket 路径 -H unix:///var/run/docker.sock

2. 清理并重建套接字目录

systemctl stop docker
rm -f /var/run/docker.sock
mkdir -p /var/run/docker
chmod 755 /var/run/docker

3. 重新加载并启动服务

systemctl daemon-reload
systemctl start docker

4. 验证修复结果

systemctl status docker
ss -lnp | grep docker
docker info

故障原因说明:

该错误通常发生在:

  1. systemd 的 socket 激活机制未正确配置
  2. dockerd 默认尝试使用 fd:// 但找不到套接字
  3. /var/run/docker.sock 权限或路径异常

替代方案(如果仍失败):

# 完全禁用 socket 激活
cat > /etc/docker/daemon.json <<EOF
{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
EOF

注意事项:

  1. 如果使用防火墙,需放行2375端口
  2. 生产环境建议配置TLS加密
  3. 检查/var/run目录是否挂载为tmpfs

请按顺序执行上述步骤,如果仍有问题,请提供:

  1. ls -ld /var/run/docker*
  2. cat /etc/docker/daemon.json(如果有)
  3. systemctl cat docker 的完整输出

网站公告

今日签到

点亮在社区的每一天
去签到