全部,
我正在使用 DCOS 和相关的 Jenkins。
我的公司有任何外部流量的代理。
Jenkins 运行正常,可以访问内部网络以及任何外部网络。
如果我设置了 HTTP 代理,我可以在 Internet 上找到 curl URL 的工作。我可以将此代理作为环境变量传递给 mesosphere/jenkins-dind:0.3.1 容器,但是,在 docker 模式下处于 docker 时,我无法运行任何 docker pull 或 docker run。
我设法在其中一个代理盒上重现了该问题。
sudo docker run hello-world
来自 Docker 的您好!
这行得通!
但是, sudo docker run --privileged mesosphere/jenkins-dind:0.3.1 wrapper.sh "docker run hello-world"将失败
docker:拉取图像时出错:获取 https://index.docker.io/v1/repositories/library/hello-world/images : x509: 证书对 FG3K6C3A13800607 有效,而不是 index.docker.io。
这通常表明 docker 守护进程无法访问代理。
您知道如何确保 dind 可以访问代理设置吗?
安托万
最佳答案
如果 Docker 守护程序未针对您的注册表进行身份验证,但看起来您正在针对公共(public)镜像运行,则此错误也可能出现,因此这不太可能是问题。
您可以尝试为 Jenkins 节点创建一个新参数(有关如何设置名为 DOCKER_EXTRA_OPTS
的环境变量的示例,请参见此处的说明:https://docs.mesosphere.com/1.8/usage/service-guides/jenkins/advanced-configuration/)。
在这种情况下,我们想要做同样的事情(使用 Name env
)但将 Value 的内容设置为类似于 HTTP_PROXY=http://proxy.example.com:80/
.
关于Jenkins mesosphere/jenkins-dind :0. 3.1 和代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40960538/