【问题标题】:Build Error while deploying to App Engine using custom containers使用自定义容器部署到 App Engine 时出现构建错误
【发布时间】:2015-01-13 15:03:21
【问题描述】:

我正在使用 google/nodejs-runtime docker 映像在 App Engine 上使用基于 nodejs 的自定义部署。

我通过 localhost 在 localhost 上构建了我的代码

gcloud preview app run .

它运行良好。但是当我使用

将它部署到我的 App Engine 时
gcloud preview app deploy .

它给出了这个错误(连同整个堆栈跟踪):

Build Error: Get https://index.docker.io/v1/repositories/google/nodejs-runtime/images: dial tcp: lookup index.docker.io on 192.168.2.1:53: no answer from server.

从内部 google 存储库获取存储库时这似乎是错误的。是吗?

  • 如果是,为什么会这样,我如何确保不会发生这种情况 再次。
  • 如果不是,那是什么问题,我该如何解决?

【问题讨论】:

  • 注意:今天部署时发生此错误,而昨天部署和服务相同的代码完美。
  • 我认为您刚刚在 Hub 上遇到了一些停机时间,现在再试一次。
  • 错误消息看起来像是本地 DNS 问题。您的 DNS 解析器是否在 192.168.2.1 上运行?您能否使用此解析器成功解析主机名:host index.docker.io 192.168.2.1。上一个 docker 问题表明重新启动 boot2docker 可能有助于解决您的解析器最近更改的问题:github.com/docker/docker/issues/3603

标签: node.js google-app-engine docker


【解决方案1】:

这就是部署到应用引擎时发生的情况:

  • Docker 检查 Google 的图像存储库,因为我使用的图像文件 (google/nodejs-runtime) 由 google 提供,并且也托管在 Google 上(我猜)。
  • 检查 docker 映像的任何更新并更新映像文件,这是始终将更新版本推送到部署的必要条件。
  • 拉取更改并将图像推送到 App Engine 服务器并检查应用是否正在服务。

虽然我的假设是问题出在 Google 端的 docker 注册表中,但事实并非如此。

所以实际上有两个问题导致了这个问题:

主要问题(如@John-Lowry 在问题的 cmets 中所述): 错误是连接到 docker 服务器的 DNS 名称解析。这是由于我的 ISP 的 DNS 问题阻止了对服务器的访问。更换 ISP 时已解决,并且在 ISP #1 上一段时间后也已解决。

次要问题(不确定是否完全相关): 一旦我切换了 ISP,就会发生以下错误

google.appengine.tools.docker.containers.ImageError: Image with tag google/docker-registry was not found

在我从服务器更新图像后,此问题已得到解决。 Similar Question 最后更新的应用程序被推送到服务器。

我不确定为什么会发生错误,但这是我评估的:

Docker 注册表映像 (google/docker-registry) 在部署之前的某个时间点进行了更新。部署时,对正在使用的映像(google/nodejs-runtime)执行检查,但由于 nodejs-runtime 依赖于 docker-registry(我猜是为了维护各种访问策略),因此有必要更新到较新的映像.

请提出修改建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-25
    • 2018-12-16
    • 2015-09-21
    • 1970-01-01
    • 2020-09-02
    • 2019-07-12
    相关资源
    最近更新 更多