实验要求
了解Docker常用网络模式,掌握Docker常用网络模式的使用。主要任务是利用busybox镜像建立容器,容器名称为test_busybox1和test_busybox2,将网络模式设置为none,并为容器配置IP地址,容器test_busybox1的IP设置为172.17.0.100,容器test_busybox2的IP设置为172.17.0.200,要求实现两容器互通。
学习准备
要求实验主机能够连接外网,已经正确安装Docker,并关闭防火墙和selinux。
学习步骤
(1)建立容器test_busybox1,设置网络模式为none
# docker run -dit --name=test_busybox1 --net=none busybox:latest
# docker exec -it test_busybox1 /bin/sh // 进入容器test_busybox1
/ # ip address // 查看IP地址
/ # exit // 退出容器test_busybox1
设置成none所以可以看出test_busybox1没有ip地址
2)建立容器test_busybox2,设置网络模式为none
# docker run -dit --name test_busybox2 --net=none busybox:latest
# docker exec -it test_busybox2 /bin/sh // 进入容器test_busybox2
/ # ip address
/ # exit // 退出容器test_busybox2
(3)为容器test_busybox1设置IP地址,IP地址设置为172.17.0.100。
//将veth设置为一端接入OVS网桥br-int
# yum -y install bridge-utils // 安装软件包
# ip link add veth0 type veth peer name veth1
// 添加一个veth对,指定veth0的对端是veth1。
# brctl addif docker0 veth0 // 将veth0加入网桥
# brctl show
# ip link set veth0 up // 启动新端口
# docker inspect test_busybox1 | grep Pid
从这次我们可以看出来,veth0已经连上了桥
# ip link set veth0 up // 启动新端口
# docker inspect test_busybox1 | grep Pid
# mkdir -p /var/run/netns
# pid1=24977 // 设置pid1为25762
# ln -s /proc/$pid1/ns/net /var/run/netns/$pid //制作软连接
# ip link set veth1 netns $pid1 //将veth1连接容器网络
# ip netns exec $pid1 ip link set dev veth1 name eth0
//将veth1重命名为eth0
# ip netns exec $pid1 ip link set eth0 up // 启用eth0
# ip netns exec $pid1 ip addr add 172.17.0.100/24 dev eth0
// 在namespace中指定IP地址
# ip netns exec $pid1 ip route add default via 172.17.0.1 // 设置网关