Linux shell 下使用代理(Proxy)上网的设置方式

缘起

我厂办公室测试小机房有一些运算资源,但是其网络是不能直接上公网的,而是通过一个内部代理(内部域名是:proxy.xxxdev.com,端口 3128)来上公网的。

但是现在部署环境,多半需要在命令行下折腾,而且还多半需要不停的从公网下东西(安装),所以,怎样在命令行下(shell 里)使用代理来上公网就成了一个绕不开的话题……

具体方案

“通用”方案

这里的通用之所以打上引号是因为其实这个方案并不通用,因为还是有很多软件不支持,只不过其相对其他来讲还算是相对通用。

Linux Bash 中有环境变量:http_proxy、https_proxy 和 ftp_proxy 等相关变量,都是做 proxy 设置的。

具体用法是:

1
2
export http_proxy=http://proxy.xxxdev.com:3218/
export https_proxy=http://proxy.xxxdev.com:3218/

这种做法 curl、wget 等命令都是支持的

pear & pecl

用 php 的,有时候会用到 pear 和 pecl。
虽然这两者查看代理设置的命令是:

1
2
pear config-get http_proxy;
pcel config-get http_proxy;

但是设置 http_proxy 的命令却都是这一句:

1
pear config-set http_proxy proxy.xxxdev.com:3128

docker pull

docker 拉取 image 的时候,如果需要代理怎么办呢?
如果是 CentOS 7.x 的环境下的话,可以:

1
2
mkdir /etc/systemd/system/docker.service.d/;
vim /etc/systemd/system/docker.service.d/https-proxy.conf;

写下如下内容:

1
2
[Service]
Environment="HTTP_PROXY=http://proxy.xxxdev.com:3128/" HTTPS_PROXY=http://proxy.xxxdev.com:3128/"

然后

1
2
systemctl daemon-reload
systemctl restart docker

docker build

docker build image 的时候,也是需要拉东西的,这时也要单独设置 proxy,具体方法在命令行中加入参数 “ –build-arg HTTP_PROXY=http://proxy.xxxdev.com:3128/ ”,于是整个命令就像是这样:

1
docker build --build-arg HTTP_PROXY=http://proxy.xxxdev.com:3128/ . -t xxx:yyy

结尾

暂时就只整理到这么多,以后有新情况再继续更新。