Bitbucket Pipelines中Docker run连接Docker daemon失败求助
解决Bitbucket Pipeline中docker-bench-security连接Docker守护进程失败的问题
以下是几个可行的排查和修复步骤:
1. 先验证Docker daemon的可访问性
在script步骤开头加入docker ps命令,确认Pipeline环境里的Docker服务是否正常运行:
script: - docker ps # 验证Docker daemon连接 - docker run -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST -v /var/run/docker.sock:/var/run/docker.sock --label docker_bench_security docker/docker-bench-security -e check_1.*
如果这一步就报错,说明Bitbucket的Docker服务未正常启动,需检查Pipeline是否使用了支持Docker的runner;如果能正常输出容器列表,问题则出在docker-bench-security的启动命令上。
2. 修复容器内的权限问题
Bitbucket Pipeline中/var/run/docker.sock的权限通常为root:root,而docker-bench-security容器默认用非root用户运行,导致无法访问sock文件。解决方法是在run命令中添加--user root参数:
docker run --user root -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST -v /var/run/docker.sock:/var/run/docker.sock docker/docker-bench-security -e check_1.*
3. 移除未配置的环境变量(可选)
如果你的Pipeline没有设置DOCKER_CONTENT_TRUST变量,这个空值可能干扰容器运行,可暂时移除该参数:
docker run --user root -v /var/run/docker.sock:/var/run/docker.sock docker/docker-bench-security -e check_1.*
最终修改后的完整配置示例
step: name: Docker Bench Security services: - docker caches: - docker script: - docker ps - docker run --user root -v /var/run/docker.sock:/var/run/docker.sock docker/docker-bench-security -e check_1.*
内容的提问来源于stack exchange,提问作者thomson
相关产品推荐
相关产品推荐

