终端配置
cat > ~/.bash_profile << EOF
function proxy_on() {
export http_proxy=http://127.0.0.1:7890
export https_proxy=\$http_proxy
echo -e "终端代理已开启。"
}
function proxy_off(){
unset http_proxy https_proxy
echo -e "终端代理已关闭。"
}
EOF
source ~/.bash_profile
其中的IP和PORT是你的代理设备的地址,前置条件是:已经在电脑上配置了代理服务,推荐clash- verge
注意:谨慎写入,建议手动打开bash_profile,新增开启和关闭的函数,防止cat覆盖原始文档记录
docker设置代理
root@gdx-GL62M-7REX:~# systemctl status docker
Warning: The unit file, source configuration file or drop-ins of docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
找到loaded配置文件的位置,修改文件
在 docker.service
的 [Service]
模块添加:proxyAddress:port需要i替换为代理软件服务的地质
IP是locahost,端口在代理软件服务里可以找到
在docker-service的文件里面加入下面的配置,并替换IP和Port
Environment=HTTP_PROXY=http://proxyAddress:port
Environment=HTTPS_PROXY=http://proxyAddress:port
Environment=NO_PROXY=localhost,127.0.0.1
重新加载配置文件并重启服务:
systemctl daemon-reload
systemctl restart docker.service
修改 dockerd 配置文件
还可以修改 dockerd
配置文件,添加:
export http_proxy="http://proxyAddress:port"
然后重启 docker daemon
即可。
国内的镜像仓库在绝大多数时候都可以满足条件,但是存在个别镜像同步不及时的情况,如果使用 latest 标签拉取到的镜像并非近期的镜像,因此有时候需要直接从官方镜像仓库拉取镜像。
为 docker 容器设置代理
为 docker daemon
进程设置代理和为 docker 容器设置代理是有区别的。比如使用 docker 启动媒体服务器 jellyfin 后,jellyfin 的刮削功能就需要代理才能正常使用,这时候不要因为在很多地方设置过代理就以为容器内部已经在使用代理了。
修改配置文件
创建或修改 ~/.docker/config.json
,添加:
{
"proxies":
{
"default":
{
"httpProxy": "http://proxyAddress:port",
"httpsProxy": "http://proxyAddress:port",
"noProxy": "localhost,127.0.0.1"
}
}
}
此后创建的新容器,会自动设置环境变量来使用代理。
为指定容器添加环境变量
在启动容器时使用 -e
手动注入环境变量 http_proxy
。这意味着进入容器使用 export
设置环境变量的方式也是可行的。
注意:如果代理是使用宿主机的代理,当网络为
bridge
模式,proxyAddress 需要填写宿主机的 IP;如果使用host
模式,proxyAddress 可以填写 127.0.0.1。
root@gdx-GL62M-7REX:~# docker run --rm -it --network host --env HTTP_PROXY="http://127.0.0.1:7897" --env HTTPS_PROXY="http://127.0.0.1:7897" docker.io/appropriate/curl /bin/sh
评论区