Docker容器网络地址 docker容器网络配置文件( 二 )


[rootlocalhost ~]# ip link show1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000link/ether 00:0c:29:bb:22:82 brd ff:ff:ff:ff:ff:ff3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group defaultlink/ether 02:42:f0:ef:67:fd brd ff:ff:ff:ff:ff:ff14: veth0veth1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000link/ether 92:53:e7:1c:f2:8c brd ff:ff:ff:ff:ff:ff15: veth1veth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000link/ether 56:2b:0c:45:fb:03 brd ff:ff:ff:ff:ff:ff
可以看到 , 此时系统中新增了一对veth pair , 将veth0和veth1两个虚拟网卡连接了起来 , 此时这对 veth pair 处于”未启用“状态 。
1.7 实现Network Namespace间通信
下面我们利用veth pair实现两个不同的 Network Namespace 之间的通信 。刚才我们已经创建了一个名为ns0的 Network Namespace , 下面再创建一个信息Network Namespace , 命名为ns1
[rootlocalhost ~]# ip netns add ns1[rootlocalhost ~]# ip netns listns1ns0
然后我们将veth0加入到ns0 , 将veth1加入到ns1
[rootlocalhost ~]# ip link set veth0 netns ns0[rootlocalhost ~]# ip link set veth1 netns ns1
然后我们分别为这对veth pair配置上ip地址 , 并启用它们
[rootlocalhost ~]# ip netns exec ns0 ip link set veth0 up[rootlocalhost ~]# ip netns exec ns0 ip addr add 192.168.100.1/24 dev veth0[rootlocalhost ~]# ip netns exec ns1 ip link set lo up[rootlocalhost ~]# ip netns exec ns1 ip link set veth1 up[rootlocalhost ~]# ip netns exec ns1 ip addr add 192.168.100.2/24 dev veth1
这对veth pair的状态
[rootlocalhost ~]# ip netns exec ns0 ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever14: veth0if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 92:53:e7:1c:f2:8c brd ff:ff:ff:ff:ff:ff link-netns ns1inet 192.168.100.1/24 scope global veth0valid_lft forever preferred_lft foreverinet6 fe80::9053:e7ff:fe1c:f28c/64 scope linkvalid_lft forever preferred_lft forever[rootlocalhost ~]# ip netns exec ns1 ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever15: veth1if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 56:2b:0c:45:fb:03 brd ff:ff:ff:ff:ff:ff link-netns ns0inet 192.168.100.2/24 scope global veth1valid_lft forever preferred_lft foreverinet6 fe80::542b:cff:fe45:fb03/64 scope linkvalid_lft forever preferred_lft forever
从上面可以看出 , 我们已经成功启用了这个veth pair , 并为每个veth设备分配了对应的ip地址 。我们尝试在ns1中访问ns0中的ip地址:
[rootlocalhost ~]# ip netns exec ns1 ping 192.168.100.1PING 192.168.100.1 (192.168.100.1) 56(84) bytes of data.64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.051 ms^C--- 192.168.100.1 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.051/0.051/0.051/0.000 ms
可以看到 , veth pair成功实现了两个不同Network Namespace之间的网络交互 。
1.8 veth设备重命名
# 需要先停用设备才能重命名[rootlocalhost ~]# ip netns exec ns0 ip link set dev veth0 name zsl0RTNETLINK answers: Device or resource busy# 停用veth0[rootlocalhost ~]# ip netns exec ns0 ip link set veth0 down# 将veth0重命名为zsl0[rootlocalhost ~]# ip netns exec ns0 ip link set dev veth0 name zsl0# 启用zsl0[rootlocalhost ~]# ip netns exec ns0 ip link set zsl0 up# 是否修改成功[rootlocalhost ~]# ip netns exec ns0 ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever14: zsl0if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 92:53:e7:1c:f2:8c brd ff:ff:ff:ff:ff:ff link-netns ns1inet 192.168.100.1/24 scope global zsl0valid_lft forever preferred_lft foreverinet6 fe80::9053:e7ff:fe1c:f28c/64 scope linkvalid_lft forever preferred_lft forever


推荐阅读