图片来自 gcr.io 的错误 运行 pod

Error running pod with image from gcr.io

我已成功 pushed my Docker container image to gcr.io 使用以下命令:

$ gcloud docker push gcr.io/project-id-123456/my-image

但是当我尝试 create a new pod 时,出现以下错误:

$ kubectl run my-image --image=gcr.io/project-id-123456/my-image
CONTROLLER  CONTAINER(S)  IMAGE(S)                           SELECTOR      REPLICAS
my-image    my-image      gcr.io/project-id-123456/my-image  run=my-image  1

$ kubectl get pods
NAME            READY  STATUS                                                                                                   RESTARTS   AGE
my-image-of9x7  0/1    Error pulling image (latest) from gcr.io/project-id-123456/my-image, Untar exit status 1 unexpected EOF  0          5m

它也没有拉动我的本地:

$ docker rmi -f $(docker images -q) # Clear local image cache
$ gcloud docker pull gcr.io/project-id-123456/my-image:latest
…
Error pulling image (latest) from gcr.io/project-id-123456/my-image, Untar re-exec error: exit status 1: output: unexpected EOF

有人可以建议我如何解决这个问题吗?

好的,在深入研究 Docker 代码库之后,我想我已经找到了一些与您所看到的类似的报告。

此错误的显示方式在 1.7 中已更改,但此线程似乎相关: https://github.com/docker/docker/issues/14792

这让我找到了这个修复程序,它出现在 1.8 中: https://github.com/docker/docker/pull/15040

具体请看这条评论: https://github.com/docker/docker/pull/15040#issuecomment-125661037

评论似乎表明这只是 v1 层的问题,因此我们对 v2 的 Beta 支持可能会解决此问题。

您可以通过以下方式推送到我们的 v2 测试版: gcloud docker --server=beta.gcr.io push beta.gcr.io/project-id-123456/...

然后您只需将 Pod 中的引用更改为 "beta.gcr.io/...",它将通过 v2 拉取。