docker容器网络
1.我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:
· host模式,使用--net=host指定
· container模式,使用--net=container:NAME_or_ID指定
· none模式,使用--net=none指定
· bridge模式,使用--net=bridge指定,默认设置
- 封闭容器 ---none
- brigde桥接 ---虚拟桥
- 联盟式容器 ---容器之间共享network虚拟桥
- 享有宿主机网络 ---物理桥
Network container Archetypes:
2. 创建不同的容器网络
host模式:
# docker run --name t3 -it --rm --network=host busybox:latest
none模式:
# docker run --name t3 -it --rm --network=none busybox:latest
bridge模式(默认 即为bridge模式):
# docker run --name t1 -it --rm --network=bridge busybox:latest
或者
# docker run --name t1 -it --rm busybox:latest
container模式:
# docker run --name t1 -it --rm --network=bridge busybox:latest
# docker run --name t2 -it --rm --network=container:t1 busybox:latest
3. 创建虚拟网卡并配置实现不同namespace通信
[root@maple-master ~]# ip netns help # 创建r1 r2 namespace # ip netns add r1 # ip netns add r2 # 在r1namespace中执行命令 # ip netns exec r1 xxx # ip link help #可以link 移动创建好的虚拟网卡到某个namespace # 创建 虚拟网卡对veth1.1 veth1.2 # ip link add name veth1.1 type veth peer name veth1.2 # 查看网卡 # ip link show 7: veth1.2@veth1.1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 56:1b:a3:68:0b:ae brd ff:ff:ff:ff:ff:ff 8: veth1.1@veth1.2: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 # 将创建好的一个虚拟网卡移动到一个namespace中来通信 # ip link set dev veth1.2 netns r2 # ip netns exec r2 ifconfig -a # 激活宿主机和r2中的虚拟网卡 # ifconfig veth1.1 10.1.0.1/24 up # ip netns exec r2 ifconfig veth1.2 10.1.0.2/24 up # 宿主机上测试ping # ping 10.1.0.2
- 同样的我们可以把veth1.1 移动到r1中来实现两个namespace的通信
4. docker run 命令扩展
# docker run --help
# docker run --name t1 -it --rm --network=bridge --hostname=maple6 --dns=8.8.8.8 --dns-search=ilinux.io busybox:latest