QNAP Container中GitLab-Runner无法连接Docker daemon求助
问题诊断
你当前的共享文件夹映射方向完全错误。GitLab Runner容器需要访问QNAP主机的Docker守护进程套接字,才能用docker executor创建子容器执行CI任务,但你把容器内部的/var/run/docker.sock挂载到了NAS共享目录,这完全搞反了依赖方向。
正确配置步骤
1. 修正Docker套接字挂载
在Container Station中编辑GitLab Runner容器的「共享文件夹」配置,删除原错误映射,添加正确的挂载:
- 主机路径:
/var/run/docker.sock(QNAP主机上的Docker守护进程套接字) - 容器路径:
/var/run/docker.sock(Runner容器内部需要访问的路径) - 权限:设置为「读写(Read & Write)」
2. 配置容器用户权限
QNAP的docker.sock默认属于docker用户组(GID通常为999),Runner容器内的进程需要属于该组才能访问套接字:
- 进入容器的「高级设置」-「环境变量」,添加变量:
DOCKER_GROUP=999 - 或者在容器启动参数中添加:
--group-add 999
3. 重启容器并验证
保存配置后重启GitLab Runner容器,确保新的挂载和权限设置生效。
4. 测试CI任务
重新触发流水线任务,确认是否解决「无法连接Docker daemon」的错误。
额外注意点
- 确保QNAP的Container Station服务处于运行状态
- 不要将
docker.sock挂载到NAS共享目录,共享目录的文件系统特性会破坏套接字的通信机制 - 若临时测试权限,可在QNAP主机通过SSH执行
chmod 666 /var/run/docker.sock(测试完成后建议改回chmod 660 /var/run/docker.sock,避免安全风险)
内容的提问来源于stack exchange,提问作者Christopher E
相关产品推荐
相关产品推荐

