配置docker容器veth-pair---实现桥接模式
前言:已知docker网络三种基础模式 bridge 、 host 、 none,
· bridge :桥接模式,创建容器时默认的网络模式;docker安装时,在宿主机内创建一个虚拟网桥docker0,并自动给docker0分配一个和宿主机不同网段的IP,本质是依靠docker0转换借助宿主机的IP与外网联通。
· host :主机模式,使用需要指定 --network host;和宿主机共用一个网段,使用宿主机的IP和端口,直接访问外网。
· none : 无网络模式,需要指定;安全性高,初始只有lo回环网络,其他需要自行配置。
· veth-pair : docker0在宿主机创建的一对虚拟设备接口/网卡(成对出现),一般以 vethxxx@数字 命名,且单数在宿主机,双数在容器内。
作用----链接两台设备,相互通信,访问外网
【宿主机】
【容器】
-----------------开始操作-----------------
目标 :为none模式添加veth-pair接口,并实现访问外网
1、创建none模式的容器
【容器内部】
2、创建veth对
· ip link add test1 type veth peer name test2
3、使veth-pair可以正常运行的环境准备
(1)查看容器的PID
(2)在/var/run下创netns目录装容器网络的namespace文件,直接软连接/proc/PID/ns/net
【通过PID指定容器独立的namespace加入到/var/run里,/var/run目录包含系统运行时需要改变的数据】
(3)添加test2到容器中
【目录名必须是 netns = network namespace】
【检查容器内部,建议多多检查,以防某一步出错】
此时test2是DOWN状态,启动test2
· ip netns exec 32956 ip link set test2 up
【还可以改名,建议改成eth0,我不改
· ip netns exec 32956 ip link set test2 name eth0】
4、给test2配IP和网关
【给test2配的IP和网关要在docker0默认网段内 docker0默认网段172.17.0.1,可以改配置文件改变默认网段】
5、配置test1(将test1和docker0连接,test2即可通过test1网段访问外网)
(1)下载brctl工具bridge-utils
(2)连接test1和docker0
(3)启动test1
· ip link set test1 up
5、测试验证
(1)ping 网关
(2)ping宿主机
(3)ping百度