Docker 客户端上的代理配置后 docker 容器内没有 http/https 连接
No http/https connectivity inside docker container after proxy configuration on Docker client
我遵循了如何为容器配置代理的 Docker guide。所以我把下面的内容放在 ~/.docker/config.json
{
(...),
"proxies":{
"default":{
"httpProxy":"http://127.0.0.1:8080",
"httpsProxy":"http://127.0.0.1:8080",
}
}
}
并运行
sudo systemctl daemon-reload
sudo systemctl restart docker
在主机中,我在127.0.0.1:8080
地址启动了代理(mitmproxy)。代理看起来在主机中正常工作。但是,当我在容器中连接时,它似乎无法正确使用代理。
docker exec -it my_container_1 /bin/bash
在bash中:
bash-5.0# wget http://google.com
wget: can't connect to remote host (127.0.0.1): Connection refused
如果我使用 ping
或某些 ftp
地址,它可以正常工作,所以它受限于代理配置。
有什么想法吗?
config.json
中定义的http_proxy
和https_proxy
由docker客户端传递给容器。这实际上在容器中设置了 http_proxy
和 https_proxy
环境变量。
运行 echo $http_proxy
在容器中会输出值。
假设主机上的代理配置正确,代理的IP地址应该是容器看到的主机IP。
将 config.json
127.0.0.1
中的 IP 替换为主机的 docker0
或主网络接口 (eth0
) 的 IP。
我遵循了如何为容器配置代理的 Docker guide。所以我把下面的内容放在 ~/.docker/config.json
{
(...),
"proxies":{
"default":{
"httpProxy":"http://127.0.0.1:8080",
"httpsProxy":"http://127.0.0.1:8080",
}
}
}
并运行
sudo systemctl daemon-reload
sudo systemctl restart docker
在主机中,我在127.0.0.1:8080
地址启动了代理(mitmproxy)。代理看起来在主机中正常工作。但是,当我在容器中连接时,它似乎无法正确使用代理。
docker exec -it my_container_1 /bin/bash
在bash中:
bash-5.0# wget http://google.com
wget: can't connect to remote host (127.0.0.1): Connection refused
如果我使用 ping
或某些 ftp
地址,它可以正常工作,所以它受限于代理配置。
有什么想法吗?
config.json
中定义的http_proxy
和https_proxy
由docker客户端传递给容器。这实际上在容器中设置了 http_proxy
和 https_proxy
环境变量。
运行 echo $http_proxy
在容器中会输出值。
假设主机上的代理配置正确,代理的IP地址应该是容器看到的主机IP。
将 config.json
127.0.0.1
中的 IP 替换为主机的 docker0
或主网络接口 (eth0
) 的 IP。