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

在Kubernetes Pod中使用Docker DinD执行docker build时连接失败

解决Kubernetes中docker:dind容器无法连接Docker守护进程的问题

你遇到的Cannot connect to the docker daemon错误,核心原因是docker:dind镜像需要特权模式才能启动内置的Docker守护进程,同时需要配置正确的存储和权限。

下面是修复后的Pod配置:

apiVersion: v1
kind: Pod
metadata:
  name: dockercontainer
  namespace: default
spec:
  containers:
  - image: docker:24.0.0-rc.1-dind
    name: dockercontainer
    securityContext:
      runAsUser: 0
      privileged: true  # 必须开启特权模式,允许容器访问主机内核资源
    volumeMounts:
    - name: docker-storage
      mountPath: /var/lib/docker  # 挂载临时存储,避免权限和持久化问题
    env:
    - name: DOCKER_TLS_CERTDIR
      value: ""  # 禁用TLS认证,直接通过unix socket连接
  volumes:
  - name: docker-storage
    emptyDir:
      medium: Memory  # 使用内存tmpfs,提升性能并避免权限问题

关键修复点说明:

  • privileged: true:docker:dind需要创建网络命名空间、挂载文件系统等特权操作,没有这个配置,内置的Docker守护进程无法启动。
  • 挂载临时存储:/var/lib/docker是Docker存储镜像和容器数据的目录,用emptyDir(内存介质)可以避免容器内的权限冲突,同时提升IO性能。
  • 禁用TLS认证:默认情况下dind会启用TLS,需要通过证书连接;设置DOCKER_TLS_CERTDIR=""后,Docker客户端可以直接通过unix://var/run/docker.sock连接守护进程。

应用修改后的配置后,重新创建Pod,进入容器执行docker build即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:01