2016-12-04 66 views
1

全部, 我正在使用DCOS和关联的Jenkins。 我的公司正在代理任何外部流量。 詹金斯运行正常,可以访问内部网络以及任何外部网络。 如果我设置了HTTP代理,我可以在互联网上找到工作来卷曲URL。我可以将这个代理传递给mesosphere/jenkins-dind:0.3.1容器作为环境变量,但是我不能在码头工模式下运行docker pull或docker run。Jenkins mesosphere/jenkins-dind:0.3.1和代理

我设法在其中一个代理框上重现问题。

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访问代理设置吗? Antoine

+0

它看起来像你应该能够利用'DOCKER_EXTRA_OPTS'的优势https://github.com/mesosphere/jenkins-dind-agent/blob/master/wrapper.sh#L5 – Aaron

+0

你好我已经试过这个,我找不到要传递的参数,我试过-e; --engine-env并且不起作用 –

回答

1

如果Docker守护进程未对您的注册表进行身份验证,但它看起来像您正在针对公共映像运行,则此错误也可能会出现,因此这可能不是问题。

您可以尝试为Jenkins节点创建新参数(有关如何设置名为DOCKER_EXTRA_OPTS的环境变量的示例,请参阅此处的说明:https://docs.mesosphere.com/1.8/usage/service-guides/jenkins/advanced-configuration/)。

在这种情况下,我们希望这样做(使用名称env),但将Value的内容设置为HTTP_PROXY=http://proxy.example.com:80/之类的内容。

+0

我试过DOCKER_EXTRA_OPTS = -e http_proxy =“http://mycompanyproxy.com:8080/”--e https_proxy =“http://mycompanyproxy.com:8080/” - -e no_proxy =“mycompany.com,localhost,127.0.0.1/8,leader.mesos,master.mesos”,它不起作用 –

+0

不,这是不正确的。您需要为名称'env'和值'HTTP_PROXY =“mycompanyproxy.com:8080/”'(以及'env'和'HTTPS_PROXY =“mycompanyproxy.com:8080/”''和等等)。 – ssk2

+0

这工作,谢谢! –