运行docker push to 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/{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/{repo}:{tag}'
}
}
回答如下:
我最终通过登录运行容器的worker解决了这个问题。运行docker container commit会在本地仓库中保存映像的快照,该仓库位于运行容器的节点上。如果该节点在另一台主机上,这是我的情况,运行docker push image将无法工作,因为管理员将无法访问workers本地存储库。所以只需直接连接到worker并运行docker push image。
运行docker push to 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/{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/{repo}:{tag}'
}
}
回答如下:
我最终通过登录运行容器的worker解决了这个问题。运行docker container commit会在本地仓库中保存映像的快照,该仓库位于运行容器的节点上。如果该节点在另一台主机上,这是我的情况,运行docker push image将无法工作,因为管理员将无法访问workers本地存储库。所以只需直接连接到worker并运行docker push image。