docker pull 设置代理(一次设置/不需来回重启)
背景
docker pull无法拉取,只能设置代理。而常规 export 对docker pull无效,因实际docker调用的守护进程执行操作,docker pull只负责传递消息。
按照官方文档 https://docs.docker.com/engine/daemon/proxy/ ,配置daemon.json,需要每次重启,且对容器内会有影响。
既想在pull时走代理,又不想容器中的请求走代理,就需要pull时配置daemon开启->重启、run时配置daemon关闭代理->重启,麻烦不优雅。
且服务器上docker部署了其他服务,不适合来回重启docker守护进程。
不需重启docker的代理配置方式
原理:本地开个监听端口(搜了半天采用privoxy),连接到远程科学服务器;docker守护进程连接到该本地端口。
关闭代理:注释privoxy转发配置并重启
开启代理:取消注释并重启
参考 https://blog.csdn.net/lpwmm/article/details/104044963
# 安装 privoxy
yum install -y privoxy
vi /etc/privoxy/config
末尾添加 forward-socks5t / x.x.x.x:7890 .
# 设置docker守护进程代理
## 如果没有/etc/docker文件夹->需创建
vi /etc/docker/daemon.json
{
"proxies": {
"http-proxy": "http://127.0.0.1:8118",
"https-proxy": "http://127.0.0.1:8118",
"no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
}
}
# 重启docker
systemctl daemon-reload
systemctl restart docker
使用
开启代理:
vi /etc/privoxy/config
取消最后一行也就是代理配置的注释
systemctl restart privoxy
关闭代理:注释配置/其他如上