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

Jenkins执行Docker Compose时无法拉取Docker Hub镜像求助

问题分析与解决方案

从你给出的Jenkins控制台错误信息repository docker.io/gateway not found: does not exist or no pull access,很容易定位到核心问题:你的docker-compose.yml里使用的镜像名没有包含Docker Hub仓库的完整前缀,Docker默认会去官方镜像库docker.io/library/里找gateway,但你推送到自己Docker Hub账号下的镜像,必须带上你的用户名前缀才能被正确识别拉取。

具体解决步骤:

  1. 修改docker-compose.yml中的镜像名称
    把image: gateway和image: products替换成你Docker Hub账号下的完整镜像路径,格式为你的Docker Hub用户名/镜像名:标签(比如你的用户名是mba,就写成mba/gateway:latest)。修改后的配置示例:

    version: '2'
    services:
      gateway:
        image: your-dockerhub-username/gateway:latest  # 替换为你的Docker Hub用户名
        environment:
          - _JAVA_OPTIONS=-Xmx512m -Xms256m
          - 'SPRING_PROFILES_ACTIVE=prod,swagger'
          # 其他环境变量保持不变...
        ports:
          - '8080:8080'
      # gateway-mysql配置不变...
      products:
        image: your-dockerhub-username/products:latest  # 同样替换用户名
        environment:
          - _JAVA_OPTIONS=-Xmx512m -Xms256m
          - 'SPRING_PROFILES_ACTIVE=prod,swagger'
          # 其他环境变量保持不变...
      # products-mysql和jhipster-registry配置不变...
    
  2. 确保Jenkins构建镜像时的标签与推送路径一致
    检查你前两个Jenkins任务(gateway和products镜像构建),在构建完镜像后,需要给镜像打上包含Docker Hub用户名的标签,再执行推送操作。比如gateway任务的shell命令应该包含:

    # 假设构建出的本地镜像名为gateway
    docker tag gateway your-dockerhub-username/gateway:latest
    docker push your-dockerhub-username/gateway:latest
    

    products任务同理,必须保证推送的镜像路径和docker-compose里配置的完全一致。

  3. 验证镜像在Docker Hub的存在性
    登录Docker Hub网页,确认你的账号下确实存在gateway和products这两个镜像,并且指定的标签(比如latest)已经正确推送成功。

问题根源补充说明:

Docker镜像的命名规则是[镜像仓库地址/][用户名/][镜像名][:标签],如果省略仓库地址和用户名,Docker会默认去官方公共镜像库docker.io/library/拉取镜像,但你的镜像存储在自己的Docker Hub私有(或公开)仓库里,必须带上你的用户名前缀,Docker才能定位到正确的镜像存储位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:02:49