这个方法是我本人隔三差五就得搜索一次的,最终还是得自己记录一下。
让 containter 容器内的程序最代理简单,基本上就是环境变量设置一下就好了。
麻烦的是 docker 的 pull 动作,复杂的原因是,docker pull命令只一个命令触发器,真正的下载动作不是这个命令也不是其子进程执行的,因此在shell环境下设置任何环境变量都是无效的。
真正生效的方法需要修改配置文件。
mkdir -p /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/http-proxy.conf # 文件名无所谓
写入类似以下的文件:
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8123"
Environment="HTTPS_PROXY=http://127.0.0.1:8123"
然后,重启服务,新的配置才会生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
其他几种涉及 docker 的代理设置方法就是大众版内容了:原文链接
执行 docker (compose) build 的情况,是同时需要设置两个代理,除了上述 systemd 里面的代理之外,还有一些网络操作是发生在用户端的。
所以,首先需要完成上面的设置,然后:
HTTPS_PROXY=http://192.xxx.8.101:88x3 docker compose build