CircleCI构建推送DockerHub镜像失败:Docker daemon连接异常求助
解决CircleCI推送Docker镜像到DockerHub的连接问题
刚看到你的问题,我之前在CircleCI上部署Docker镜像时也踩过类似的坑,咱们一步步来解决:
核心问题分析
你遇到的Cannot connect to the Docker daemon错误,根源是在setup_remote_docker步骤后使用了sudo执行docker命令。CircleCI的setup_remote_docker会在容器内配置好直接连接远程Docker daemon的客户端环境,这个配置是针对当前用户的,而sudo会切换到root用户,导致找不到正确的daemon连接配置,自然就连不上了。
另外,错误日志里你打错了环境变量($HUB_NAMEr多了个r),不过看你的config.yml里是正确的,应该是输入时的手滑,暂时不用管这个。
具体修复方案
把你的config.yml相关片段改成下面这样,我会标注关键修改点:
# run tests! - run: mvn integration-test # 可选:指定Docker版本,避免环境兼容问题 - setup_remote_docker: docker_version: 20.10.14 - run: name: Build and deploy docker images command: | docker build -t $HUB_NAME:latest . - deploy: name: Push application Docker image command: | # 1. 去掉所有docker命令前的sudo # 2. 改用--password-stdin方式登录,更安全且避免CLI传密码的警告 echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_LOGIN" --password-stdin docker tag $HUB_NAME $DOCKER_LOGIN/$HUB_NAME docker push $DOCKER_LOGIN/$HUB_NAME
额外注意事项
- 确保你已经在CircleCI项目的环境变量设置里正确添加了
DOCKER_LOGIN(你的DockerHub用户名)、DOCKER_PASSWORD(建议用DockerHub的访问令牌而非明文密码)和HUB_NAME(你的镜像名称),这些变量要设置为加密状态,避免泄露。 - 如果构建时还是有问题,可以在
setup_remote_docker后加一步验证命令,确认客户端能正常连接daemon:
- run: docker info
这样调整后应该就能顺利推送镜像了,我之前这么改完就解决了一模一样的连接问题。
内容的提问来源于stack exchange,提问作者Peter Parker
相关产品推荐
相关产品推荐

