首页 > 解决方案 > 如何配置动态配置的 Docker 代理

问题描述

我在 Windows 10 上安装了 Docker,并从 Docker Hub 中提取了 jenkins docker。接下来,我启动了我的 jenkins docker,

docker run --rm -u root -p 8080:8080 -v my_host_path:/var/jenkins_home jenkins

接下来,我使用 Manage Jenkins 和 Manage Plugins 安装 Docker 插件,然后进入配置页面并尝试添加 Docker Cloud。

在我输入Docker Host URI : tcp://127.0.0.1:2375 后,我想“测试连接”,但不幸的是失败了。

我尝试按照以下链接的说明进行操作: 如何找到要在 Jenkins“Docker 插件”中使用的“Docker 主机 URI”?

但是我在 jenkins 容器的 /etc/default/* 下找不到任何 docker 设置文件,所以我无法设置DOCKER_OPTS参数。

有人可以给我任何建议吗?谢谢 !

标签: dockerjenkins

解决方案


问题背景:Rafal Leszko 的《使用 Docker 和 Jenkins 进行持续交付》一书第 3 章练习的结尾

配置和排除 Docker 守护程序页面

重要提示:Docker Desktop for Windows 或 Docker Desktop for Mac 不支持在 daemon.json 中设置主机。

设置docker 主机 uri在 Windows 上不起作用。因此,这些中的任何一个都不会在“设置”>“守护程序”选项卡中工作:

  1. “主机”:“-H tcp://0.0.0.0:2375”
  2. “DOCKER_OPTS”:“-H tcp://0.0.0.0:2375”

按照某些地方的建议,在没有 TLS 的情况下(常规选项卡上的复选框)公开守护程序对我也不起作用。

将 Jenkins 中的 Docker 插件与 docker 主机连接的解决方案是:使用特殊的 DNS 名称host.docker.internal

文档

如何从容器连接到主机上的服务? Windows 有一个不断变化的 IP 地址(如果您没有网络访问权限,则没有)。我们建议您连接到特殊的 DNS 名称 host.docker.internal,它解析为主机使用的内部 IP 地址。这是出于开发目的,不适用于 Docker Desktop for Windows 之外的生产环境。网关也可以通过 gateway.docker.internal 访问。有关 Docker Desktop for Windows 中网络功能的更多信息,请参阅网络。

虽然“不会在 Docker Desktop for Windows 之外的生产环境中工作”的免责声明可能会困扰一些人,但我相信 Docker for Windows 无论如何都不适用于生产用例。

此外,为 Jenkins 代理-主通信 -p 50000:50000 发布此映射


推荐阅读