4

gcloud docker push在过去的几周里,我在推送图片时遇到了很多问题。我已经阅读了许多堆栈溢出讨论以及 github 问题和解决方法,但我还没有遇到不一致的解决方案。

通常我会尝试推送一个或两个容器图像。第一次推送几乎总是会失败,并显示以下 retry-until-timeout 输出:

在此处输入图像描述

我只能用gcloud auth login. 最多 5 分钟后,我将尝试推送第二张图像,并再次看到重试直到超时问题。在我gcloud auth login再次尝试之前,我会在每次尝试中看到这一点。

通常,在实际推送图像之前,我必须在验证后立即手动重试几次。

  1. 我真的被注销了吗(我仍然可以使用机器访问 pod 和实例等kubectlgcloud?如果是这样,为什么注销不一致以及构建 docker 容器会做什么会使我的本地 gcloud 会话无效?
  2. 如果不是,为什么我不能gcloud docker push在我再次进行身份验证之前?在那之后,为什么这仍然不一致(我怀疑它可能与真正的问题几乎没有关系)。
  3. 有没有办法使用 docker-machine 和 gcloud docker push 在 OSX 上推送图像可靠?是否有另一种方法可以将图像获取到云存储库(最好从命令行)?

gcloud --version alpha 2016.01.12 beta 2016.01.12 bq 2.0.18 bq-nix 2.0.18 core 2016.02.11 core-nix 2016.02.05 gcloud gsutil 4.16 gsutil-nix 4.15 kubectl kubectl-darwin-x86_64 1.1.7

docker --version Docker version 1.10.1, build 9e83765

docker-machine --version docker-machine version 0.6.0, build e27fb87

virtualbox 版本 5.0.14 r105127

4

3 回答 3

2

我有相同或类似的问题。在上面的屏幕截图所示的几分钟重试循环后,该命令将失败并显示net/http: TLS handshake timeout.

为我修复它的解决方案是编辑 docker 守护程序配置

DOCKER_OPTS="--max-concurrent-uploads=1"

我感觉这个问题与 docker 阻塞网络有关,因为我注意到即使浏览到 gmail 也会超时(!)

于 2016-08-28T12:13:29.100 回答
1

切换到常规docker push无助于超时。这似乎与您的 ISP 和上传资产有关。

我收到了同样的错误。在将 Docker 构建过程移动到云(具有更大的管道)之后,gcloud docker 构建和部署图像就好了。

于 2016-07-18T16:15:59.480 回答
0

我从来没有遇到过你提到的问题gcloud docker,但是关于你的最后一点,

是否有另一种方法可以将图像获取到云存储库(最好从命令行)?

确实可以在不通过 gcloud 的情况下推送到 gcr.io 存储库,例如:

docker login -e dummy@example.com -p $(gcloud auth print-access-token) -u _token https://gcr.io
docker push [your-image]

归功于 mattmoor,原始答案中的更多信息: Access google container registry without the gcloud client

于 2016-02-24T13:48:41.923 回答