首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker DinD升级后无法生成映像

Docker DinD升级后无法生成映像
EN

Stack Overflow用户
提问于 2022-07-12 17:59:55
回答 1查看 48关注 0票数 0

我们用的是码头18.9.8-dind。DinD - Docker - container正在单独的容器中运行Docker。通过这种方式,我们向这个容器发送请求来构建我们的映像,而不是在想要生成映像的机器上执行Docker。

我们需要从18.9.8-dind升级到20.10.14-dind。由于我们使用Kubernetes,所以我们更新了一些YAML文件中的图像版本:

代码语言:javascript
复制
     spec:
       containers:
       - name: builder
-        image: docker:18.09.8-dind
+        image: docker:20.10.14-dind
         args: ["--storage-driver", "overlay2", "--mtu", "1460"]
         imagePullPolicy: Always
         resources:

唉,事情从那以后就停止了。构建失败,我们可以在针对我们的Docker构建器的代码中找到这些错误消息:

代码语言:javascript
复制
{"errno":-111,"code":"ECONNREFUSED","syscall":"connect","address":"123.456.789.10","port":2375}
Something went wrong and the entire build was interrupted due to an incorrect configuration file or build step,
check your source code.

会发生什么事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-12 17:59:55

我们检查了码头舱中的日志,最后发现了这条消息:

代码语言:javascript
复制
API listen on [::]:2376

嗯,我们在问题中的消息说,我们试图连接到端口2375,它过去是工作的。为什么港口变了?

Docker启用默认的TLS。从19.03版本开始。当Docker使用TLS时,它会监听端口2376。

我们有三种选择:

  • 将端口更改为2375 (这听起来是个坏主意:我们将使用默认的普通端口进行TLS通信。这可能会在未来混淆);
  • 连接到新端口;或
  • 禁用TLs。

总的来说,最后一个可能是最好的。但是,出于特定的原因,我们选择禁用TLS,它只需要另一个YAML文件中的环境变量:

代码语言:javascript
复制
       - name: builder
         image: docker:20.10.14-dind
         args: ["--storage-driver", "overlay2", "--mtu", "1460"]
+        env:
+        - name: DOCKER_TLS_CERTDIR
+          value: ""
         imagePullPolicy: Always
         resources:
           requests:

不过,在大多数情况下,启用TLS并更改客户端中的端口可能更好。

(分享https://stackoverflow.com/help/self-answer的精神,因为我们花了一些时间把这些部分拼凑在一起。也许通过与错误消息一起分享这些信息,其他受影响的人可以更容易地找到这些信息。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72956578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档