我们用的是码头18.9.8-dind。DinD - Docker - container正在单独的容器中运行Docker。通过这种方式,我们向这个容器发送请求来构建我们的映像,而不是在想要生成映像的机器上执行Docker。
我们需要从18.9.8-dind升级到20.10.14-dind。由于我们使用Kubernetes,所以我们更新了一些YAML文件中的图像版本:
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构建器的代码中找到这些错误消息:
{"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.会发生什么事?
发布于 2022-07-12 17:59:55
我们检查了码头舱中的日志,最后发现了这条消息:
API listen on [::]:2376嗯,我们在问题中的消息说,我们试图连接到端口2375,它过去是工作的。为什么港口变了?
Docker启用默认的TLS。从19.03版本开始。当Docker使用TLS时,它会监听端口2376。。
我们有三种选择:
总的来说,最后一个可能是最好的。但是,出于特定的原因,我们选择禁用TLS,它只需要另一个YAML文件中的环境变量:
- 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的精神,因为我们花了一些时间把这些部分拼凑在一起。也许通过与错误消息一起分享这些信息,其他受影响的人可以更容易地找到这些信息。)
https://stackoverflow.com/questions/72956578
复制相似问题