首页 > 解决方案 > 运行 docker push 到 ECR 时找不到 Docker 映像

问题描述

我有这个在开发中工作(因为一切都在一台机器上),但在生产中我有一个带有管理器和工作节点的 docker swarm。当我运行docker commit它时,它会创建一个快照并运行docker image ls确认这一点,但是当我尝试推送到私有注册表(ecr)时,docker 找不到图像。我猜这是因为图像在工人身上而经理找不到,或者图像在经理身上而工人找不到。我怎样才能解决这个问题?

{ 
  Error: '(HTTP code 404) no such image - No such image: {account-id}.dkr.ecr.us-east-1.amazonaws.com/{repo}:{tag}'
    at /root/labs/node_modules/docker-modem/lib/modem.js:257:17
    at getCause (/root/labs/node_modules/docker-modem/lib/modem.js:287:7)
    at Modem.buildPayload (/root/labs/node_modules/docker-modem/lib/modem.js:256:5)
    at IncomingMessage.<anonymous> (/root/labs/node_modules/docker-modem/lib/modem.js:232:14)
    at Object.apply (/root/labs/node_modules/harmony-reflect/reflect.js:2064:37)
    at IncomingMessage.emit (events.js:187:15)
    at Object.apply (/root/labs/node_modules/harmony-reflect/reflect.js:2064:37)
    at IncomingMessage.EventEmitter.emit (domain.js:441:20)
    at endReadableNT (_stream_readable.js:1094:12)
    at Object.apply (/root/labs/node_modules/harmony-reflect/reflect.js:2064:37)
    at process._tickCallback (internal/process/next_tick.js:63:19)
  reason: 'no such image',
  statusCode: 404,
  json: { 
    message: 'No such image: {account-id}.dkr.ecr.us-east-1.amazonaws.com/{repo}:{tag}' 
  }
} 

标签: node.jsamazon-web-servicesdockerdocker-swarmelastic-container-registry

解决方案


我最终通过登录运行容器的工作人员解决了这个问题。运行 docker container commit 将映像的快照保存在本地 repo 中,该 repo 位于运行容器的节点上。如果该节点位于另一台主机上,这是我的情况,则运行 docker push 映像将不起作用,因为管理器将无权访问工作人员本地存储库。因此,只需直接连接到 worker 并运行 docker push image。


推荐阅读