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

如何为非root用户授予Docker DIND的docker.sock访问权限?

问题描述

现有相关问题及解答均已不再适用,原解决方案失效的具体情况如下:

  • 容器运行时/var/run/docker.sock不存在,挂载该路径会自动生成目录,导致DIND启动失败;强制绑定挂载也会因同样原因报错。
  • 挂载/var/run可正常运行,但socket权限为root:root,非root容器无法访问(触发标准Docker权限拒绝错误)。修改gid的方案同样无效,因为无法在myapp容器内读取DIND的docker组gid。

应用容器以root身份启动,可在docker-entrypoint.sh中以root权限执行脚本修改socket权限,但实际需要访问DIND的应用是通过su-exec以非root用户运行的。

docker-compose.yml 片段

---
  myapp-docker:
    # image: mycorp/myapp-docker:dind-rootless # 尝试使用rootless dind镜像但同样失败
    image: docker:20.10.17-dind
    container_name: myapp-docker
    privileged: true
    restart: always
    volumes:
      - ./data/docker/run:/var/run/
      - ./data/docker/lib:/var/lib/docker
      - ./data/docker/certs:/certs
    environment:
      DOCKER_TLS_CERTDIR: /certs
    networks:
      myappnet:
        ipv4_address: 10.5.0.7

我已将./data/docker/run和./data/docker/lib挂载到myapp容器中。

曾考虑查看Kasm源码,了解其如何使用rootless dind(若确实采用无root访问机制),但尚未实施。

编辑:正在将应用转换为使用Docker API,希望能获得相关帮助。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:17:07