我正在开发中(因为所有内容都在一台机器上),但是在生产中,我有一个带有管理者和工作者节点的docker群。当我运行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}'
}
}
答案 0 :(得分:0)
我最终通过登录运行容器的工人来解决了这个问题。运行docker容器提交会在本地仓库中保存映像的快照,该快照位于容器正在运行的节点上。如果该节点在另一台主机上(我就是这种情况),则运行docker push镜像将不起作用,因为管理器将无法访问worker本地存储库。因此,直接连接到worker并运行docker push image。