![如何让 conda 在 Docker 容器内使用主机代理](https://linux22.com/image/701941/%E5%A6%82%E4%BD%95%E8%AE%A9%20conda%20%E5%9C%A8%20Docker%20%E5%AE%B9%E5%99%A8%E5%86%85%E4%BD%BF%E7%94%A8%E4%B8%BB%E6%9C%BA%E4%BB%A3%E7%90%86.png)
情况是这样的。我正在使用Docker使用 continuumio/anaconda3 镜像。我的服务器(Ubuntu 16.04 LTS)配置为使用公司代理使用 CNTLM 包。通过本地代理,互联网在主机上正常运行。
我还修改了 cntlm.conf 以监听 172.17.0.1 上的 Docker 虚拟网络接口 (docker0)。
Docker 也配置正确,我可以毫无问题地提取图像。一旦我使用 Anaconda 映像部署容器,并通过导出环境变量http_proxy="http://172.17.0.1:3128"
等将容器配置为使用主机代理,我就可以使用wget
和curl
下载。
问题来了conda
。我按照文档操作,还导出了HTTP_PROXY
和HTTPS_PROXY
变量。这不起作用。然后我在目录中创建了一个.condarc
文件,其中包含:/root
proxy_servers:
https: localhost:3128
http: localhost:3128
也试过了ssl_verify: False
。
似乎没有什么效果。我总是得到以下错误:
CondaHTTPError: HTTP None None for url <https://repo.continuum.io/pkgs/free/linux-64/repodata.json.bz2>
Elapsed: None
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
ProxyError(MaxRetryError("HTTPSConnectionPool(host='repo.continuum.io', port=443): Max retries exceeded with url: /pkgs/free/linux-64/repodata.json.bz2 (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7fd88e1d1240>: Failed to establish a new connection: [Errno 111] Connection refused',)))",),)
答案1
尝试在 Dockerfile 上创建这些变量:
ENV http_proxy="x.x.x.x:xxxx"
ENV https_proxy="x.x.x.x:xxxx"
那个 xxxx 不是 127.0.0.1。那个 ip 应该是 cntlm 代理的标准 LAN ip。