如何使用dockerode推送图像? (未推送图片,但没有错误)

时间:2019-01-18 11:11:29

标签: docker dockerode

我有此代码:

import * as Docker from 'dockerode'
const docker = new Docker()
const remoteDockerImage = docker.getImage(`${awsRepoUrl}:${version}`)

await remoteDockerImage.push({
  authconfig: { base64: 'auth token from aws' },
  tag: version,
})

运行此命令后,即使我将on("error")的返回值放在.push上也没有错误。

这将在docker日志中创建以下内容

[18:47:06.056][ApiProxy       ][Info   ] time="2019-01-18T18:47:06+08:00" msg="proxy >> POST /images/284135xxxxxx.dkr.ecr.us-east-1.amazonaws.com/xxxx:v0.1.200/push?tag=v0.1.200\n"
[18:49:18.018][DnsUpdater     ][Error  ] Unable to update dns settings: Value cannot be null.
Parameter name: first
[18:49:18.018][DnsUpdater     ][Info   ] Network configuration change detected
[18:49:19.068][DnsUpdater     ][Error  ] Unable to update dns settings: Value cannot be null.

什么也没有发生,没有图像被推送。不知道这些DNS错误是什么...

但是现在当我进入CMD行并且运行docker login -u AWS -p secretAWSkey https://284135xxxxxx.dkr.ecr.us-east-1.amazonaws.com然后运行docker push my-image时,我会在日志中看到:

[18:57:17.517][ApiProxy       ][Info   ] time="2019-01-18T18:57:17+08:00" msg="proxy << POST /v1.39/auth (5.1241041s)\n"
[18:57:17.694][ApiProxy       ][Info   ] time="2019-01-18T18:57:17+08:00" msg="proxy >> GET /_ping\n"
[18:57:17.699][ApiProxy       ][Info   ] time="2019-01-18T18:57:17+08:00" msg="proxy << GET /_ping (3.9935ms)\n"
[18:57:18.107][ApiProxy       ][Info   ] time="2019-01-18T18:57:18+08:00" msg="proxy >> POST /v1.39/images/284135xxxxxx.dkr.ecr.us-east-1.amazonaws.com/app-repo/push?tag=v0.1.206\n"

现在图像已被推送并正常工作。

差异(有效与无效)

  • /v1.39/images//images/
  • 致电/v1.39/auth与不致电

不知道该怎么办,因为dockerode的api确实很糟糕或丢失,我不知道该怎么做。任何帮助表示赞赏。谢谢

1 个答案:

答案 0 :(得分:0)

根据dockerode的{​​{1}}文件,您可能需要在README.md对象中将“ base64”替换为“ key”。

请在此处查看authconfig的示例:https://github.com/apocas/dockerode/blob/master/README.md#pull-from-private-repos