本文章分两部分,第一部分介绍虚拟机网络配置,第二部分介绍docker怎么在这个基础上拉gcr.io的镜像。
一.虚拟机网络配置
很多文章都提到说虚拟机想proxy上网需要桥接等等,其实是没理解虚拟机和宿主机之间的关系,其实桥接不桥接的根本不是重点,用NAT模式一样可以。
桥接的本质是让虚拟机和宿主机都接在同一个网络环境下,使得虚拟机和宿主机有同样的ip段,这样能方便外部的其他机器访问到虚拟机。
而NAT模式是在宿主机上分配一个网络段,让虚拟机接入到该网络段,这样只有虚拟机和宿主机能互相访问,外部机器无法访问虚拟机。
而虚拟机proxy的本质原理是,在虚拟机上也配置proxy,proxy的地址和端口就是宿主机的ip+proxy工具的端口,例如192.168.1.77:7890。这样虚拟机就可以上网了,所以桥接和NAT针对这个场景有区别吗?
我的虚拟机是一台ubuntu,我就以这个为例说一下我的配置过程。
首先打开proxy工具,第一行显示的就是端口号。之后把Allow LAN和System Proxy都打开。
之后进入到虚拟机,输入命令:
vi ~/.bashrc
在最后加上这两行:
export http_proxy=http://192.168.1.77:7890
export https_proxy=https://192.168.1.77:7890
192.168.1.77是我的宿主机的ip,请自行填成你自己的。
之后保存退出。
执行命令:
source ~/.bashrc
这样就可以了。
二.docker拉gcr.io镜像
在第一步的前提下,输入以下命令:
mkdir /etc/systemd/system/docker.service.d
然后
vim /etc/systemd/system/docker.service.d/http_proxy.conf
加入这个配置
[Service] Environment="HTTP_PROXY=192.168.1.777:7890" Environment="HTTPS_PROXY=192.168.1.77:7890"
这就相当于给docker也配置了代理
然后重启一下docker
sudo systemctl daemon-reload sudo systemctl restart docker
这样就可以了。