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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:19:13