某些资源无法直接访问获取,比如docker镜像,github资源等.
这里提供一种方案,但这种方案基于已有代理软件可以访问上述资源的同学.
该方案只是为了方便使用虚拟机时,也可以使用代理去获取外网资源.
核心思路就是配置虚拟机的网络访问,从宿主机的代理端口进行跳转.
这里我以虚拟机NAT网络模式举例:
1.首先,代理软件需要支持开放局域网访问,在软件中找找类似的配置项并开启
2.修改 /etc/profile 文件,加入两行
[宿主机接口ip] -> 比如你的虚拟机ip是192.168.6.188,对应宿主机接口ip一般是192.168.6.1,不确定的话在宿主机用ipconfig命令查找下.
[宿主机代理端口] -> 宿主机上运行的代理软件的端口
export http_proxy=http://[宿主机接口ip]:[宿主机代理端口]/
export https_proxy=http://[宿主机接口ip]:[宿主机代理端口]/
刷新配置
source /etc/profile
该项配置完成后就可以curl,wget等操作访问你需要的资源,可以测试下
curl https://github.com
3. 类似Docker的软件并没有使用上述的全局配置,他们有自己的守护进程,通过在/etc/systemd/system目录下新建配置去覆盖已有的守护进程,就可以直接拉取想要的镜像.
新建的目录名取决于你要覆盖掉的服务,名称一致,比如要覆盖docker服务,名称就是docker.service.d
mkdir -p /etc/systemd/system/docker.service.d
进入该目录创建任意文件以.conf结尾
vim /etc/systemd/system/docker.service.d/proxy.conf
该文件中写入如下内容
[Service]
Environment="HTTP_PROXY=http://[宿主机接口ip]:[宿主机代理端口]/"
Environment="HTTPS_PROXY=http://[宿主机接口ip]:[宿主机代理端口]/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
刷新配置
systemctl daemon-reload
systemctl restart docker
然后docker pull 拉取一个国内镜像仓库没有的镜像试试(#^.^#)
如果使用的是桥接网络,上述 [宿主机接口ip] 换成 [宿主机局域网ip] 即可.