将Docker-Compose镜像推送至Azure容器注册表时遇上传跳过问题求助
解决Docker Compose推送镜像至Azure容器注册表(ACR)时全部被跳过的问题
问题原因
你当前docker-compose.yml里的所有镜像都是Docker Hub等公共仓库的官方/第三方镜像,docker-compose push只会推送标记了私有仓库(你的ACR)地址的本地镜像,公共镜像会被直接跳过——因为这些镜像已经存在于公共仓库,ACR可以直接从公共仓库拉取,无需你重复推送。
如果需要把这些镜像复制到你的ACR中(比如用于离线环境、统一镜像管理),按以下步骤操作即可:
操作步骤
登录你的Azure容器注册表
通过Azure CLI完成登录:az acr login --name <你的ACR名称>修改docker-compose.yml的镜像标签
给每个服务的image字段加上ACR地址前缀,格式为<ACR名称>.azurecr.io/原镜像名:标签。修改后的配置示例:# 修改后的docker-compose.yml version: '3' services: proxy: image: <你的ACR名称>.azurecr.io/nginx:1.17.3 ports: - 80:80 - 443:443 volumes: - ./nginx:/etc/nginx:ro - /etc/letsencrypt:/etc/letsencrypt:ro fdp: image: <你的ACR名称>.azurecr.io/fairdata/fairdatapoint:1.15 volumes: - ./application.yml:/fdp/application.yml:ro fdp-client: image: <你的ACR名称>.azurecr.io/fairdata/fairdatapoint-client:1.15 environment: - FDP_HOST=fdp mongo: image: <你的ACR名称>.azurecr.io/mongo:4.0.12 ports: - "127.0.0.1:27017:27017" volumes: - ./mongo/data:/data/db blazegraph: image: <你的ACR名称>.azurecr.io/metaphacts/blazegraph-basic:2.2.0-20160908.003514-6 volumes: - ./blazegraph:/blazegraph-data拉取镜像并推送至ACR
先拉取公共镜像到本地(本地已存在可跳过):docker-compose pull执行推送命令,此时所有镜像会被推送至你的ACR:
docker-compose push
补充说明
- 若后续有自定义构建的镜像(服务配置含
build字段),只需把image字段设为ACR前缀的名称,执行docker-compose build构建后,再运行docker-compose push即可直接推送自定义镜像至ACR。 - 推送完成后,后续部署可直接使用ACR中的镜像地址,确保部署环境能访问你的ACR。
内容的提问来源于stack exchange,提问作者Elazar
相关产品推荐
相关产品推荐

