问答 以 Docker 方式运行 Jenkins,试图构建 Docker 镜像,如何配置镜像地址为内网的地址?

DingJunyao · 2022年04月14日 · 最后由 D 回复于 2022年04月23日 · 5218 次阅读

参照 Jenkins 的官方文档 搭建环境,搭建后有两个容器,一个是 docker:dind,另一个是 jenkins/jenkins

公司网络管理比较严格,宿主机无法访问外网,包管理器、镜像等只能用内网地址。宿主机已经配置好了镜像地址,且在宿主机进行构建时,正常。

但是在 Jenkins 中构建镜像时,却构建失败。解决一系列问题后,发现构建镜像时,输出中有如下内容:

Step 1/13 : FROM jenkins/jenkins:latest
Get "https://registry-1.docker.io/v2/": context deadline exceeded
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我初步认定是没有配置好镜像地址。在两个容器内执行 docker system info,发现没有 Registry Mirrors 项。但是容器内部无法像宿主机一样对 docker 进行配置,网上也查不到这种情况下如何配置镜像地址。

在不改变 “以 Docker 方式运行 Jenkins” 的前提下,如何配置?

配置文件原理上和官网教程基本一致,只是改为在内网完成全部操作,就不贴了。

最佳回复

终于找到解决方案了……
来源:http://lokie.wang/article/91
里面提到了在运行 dind 的时候,添加参数 --registry-mirror 地址

不过又出现新的问题了:构建镜像时,无法访问内网……
不过也解决了,运行 dind 的时候,添加参数 --dns DNS地址 即可

共收到 4 条回复 时间 点赞

docker in docker

小狄子 回复

是的,想搞的就是这个……就是卡在了镜像地址上……
试着从 docker 官方提供的 Dockerfile 构建,但是运行的时候就失败,提示:

docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "dockerd-entrypoint.sh": executable file not found in $PATH: unknown.

终于找到解决方案了……
来源:http://lokie.wang/article/91
里面提到了在运行 dind 的时候,添加参数 --registry-mirror 地址

不过又出现新的问题了:构建镜像时,无法访问内网……
不过也解决了,运行 dind 的时候,添加参数 --dns DNS地址 即可

启动 jenkins 的时候可以共享宿主机的 docker.sock,达到直接使用宿主机 docker 的目的

DingJunyao 关闭了讨论 04月27日 10:00
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册