gcloud docker 推送可靠性

gcloud docker push reliability

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

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

我只能用gcloud auth login绕过它。最多 5 分钟后,我会尝试推送第二张图片,并且会再次看到重试直到超时问题。我每次尝试都会看到这个,直到我再次 gcloud auth login

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

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

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

我从未遇到过您在 gcloud docker 中提到的问题,但关于您的最后一点,

Is there another way to get images to the cloud repository (preferably from the command line)?

确实可以在不通过 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,原始答案中的更多信息在这里:

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

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

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

为我修复它的解决方案是使用

编辑 docker 守护程序配置

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

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