Docker Proxy
Contents
在命令行中输入 docker
命令会涉及多少个代理阶段呢?答案是3个
docker -> docker daemon
docker是一个客户端,它可以通过网络访问多个daemon,不一定是本机。docker在访问daemon时会使用标准的
$http_proxy/$https_proxy
环境变量docker daemon -> docker hub/other
docker daemon访问外网时,如果需要proxy,需要这样配置。
{ "proxies": { "http-proxy": "http://proxy.example.com:3128", "https-proxy": "https://proxy.example.com:3129", "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8" } }
docker container
如果
docker build
和docker run
时,容器自己还可能需要访问网络,这个在这里配置。需要创建一个~/.docker/config.json
{ "proxies": { "default": { "httpProxy": "http://proxy.example.com:3128", "httpsProxy": "https://proxy.example.com:3129", "noProxy": "*.test.example.com,.example.org,127.0.0.0/8" } } }
注意 这两个json文件是不太一样的,尤其是一个是 snake-case,另一个是 camelCase