无法将Docker镜像推送到带有Docker Go SDK的ECR

时间:2017-06-06 22:58:57

标签: go

我正在使用Docker客户端SDK for Go,而我遇到了将图像推送到我的AWS ECR的问题。

这是我的功能的要点

import (
    "github.com/docker/docker/api/types"
    dockerclient "github.com/docker/docker/client"
)
func doPush(target string) {
    envCli, err := dockerclient.NewEnvClient()
    if err != nil {
        panic(err)
    }

    rc, err := envCli.ImagePush(
        context.Background(),
        target,
        types.ImagePushOptions{})
    if err != nil {
        panic(err)
    }
    defer rc.Close()
}

我的图片标记为[regid] .dkr.ecr.us-east-1.amazonaws.com / demo:latest,但我收到以下错误:

  

无效的参考格式

如果从图像名称中删除[:tag],它将一直有效,直到我得到

  

来自守护程序的错误响应:错误的参数和缺少的X-Registry-Auth:EOF

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我解决了它给Docker推送选项一个任意的RegistryAuth。

以下代码有效:

closer, err = dockerClient.ImagePush(context.Background(), privateTagName,
                                     types.ImagePushOptions{
                    All: true,
                    RegistryAuth:"123",
                })
if err != nil{
  panic(err)
}
io.Copy(os.Stdout, closer)
closer.Close()

我在this post中读到,给RegistryAuth带来任何价值都可以。