从主机使用socks5代理进行docker构建

问题描述 投票:0回答:1

为了构建一个特定的镜像,我需要创建一个隧道,并让docker使用这个隧道作为socks5的代理(将代理也用于DNS)。

所以现在我遇到了几个问题。

  1. 如何让docker使用主机上的代理?
  2. 如何让docker使用代理来获取基础镜像?
  3. 如何让docker使用代理来获取RUN指令?
  4. 如何让docker使用代理来执行add指令?
docker proxy dns socks tunnel
1个回答
0
投票

由于我花了一整天的时间来研究这个问题,下面是答案。

  1. 使用localhost:port是行不通的。直到 这个 问题解决了,你需要使用你的docker0网络接口的IP地址(我的情况是172.17.0.1)。
  2. 这个答案也适用于问题3。只要把这个内容(如果需要的话,改变IP和端口)放到 ~/.docker/config.json (注意协议是socks5h)
    {
        "proxies":
        {
            "default":
            {
                "httpProxy": "socks5h://172.17.0.1:3128",
                "httpsProxy": "socks5h://172.17.0.1:3128",
                "noProxy": ""
            }
        }
    }
  1. 不知道为什么,对于ADD指令,以前的设置不适用(名字不能通过代理解析)。我们需要把这些内容放到 /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=socks5://172.17.0.1:3128/"

然后

sudo systemctl daemon-reload
sudo systemctl restart docker
© www.soinside.com 2019 - 2024. All rights reserved.