Docker的四种网络模式:
- bridge(默认网络)
- host
- none
- container
- 自定义网络
一、bridge模式
bridge网络模式是docker的默认网络模式
当docker进程启动的时候,会在主机上自动创建一个名为docker0的虚拟网桥
同时docker0也是所有容器的默认网关;在主机上创建⼀对虚拟⽹卡 veth pair 设备,Docker 将 veth pair 设备的⼀端放
在新创建的容器中,并命名为 eth0 (容器的⽹卡),另⼀端放在主机中,以 vethxxx 这样类似的名 字命名,并将这个⽹络设备加⼊到 docker0 ⽹桥中。可以通过 brctl show 命令查看。
容器互联
创建两个容器测试
test1 容器
IP为 172.17.0.4
test2 容器
IP为 172.17.0.5
结论:互ping 可以通信
问题:ping IP可以,如果ping 容器名呢??
结果发现,不管是哪边ping容器名,都无法ping同
想要ping同,需要在创建的时候加上
--link
参数
注意!--link 只能单向ping 同,也就是说,只能test1 ping test2
二、host模式
使用host模式,容器的网卡会和主机网卡共享IP地址
docker run -dit --name test3 --net=host busybox
# --net=host 指定网络模式
容器IP
主机IP
结论:二者的IP信息完全一样,共享IP
三、none模式
none即空,即容器没有网络,没有网卡信息
四、container模式
和某个容器共享IP
docker run -dit --name test6 --net=container:test5 busybox
# 创建一个test6容器,IP和test5保持共享
test5
test6
容器之间通过lo网卡互通
五、自定义模式
一般都是自定义 bridge模式
自定义bridge模式和bridge模式最大不同点
自定义bridge模式无需通过
--link
实现容器名互通
创建出来的自定义bridge模式直接互通
测试
创建两个自定义bridge模式的容器
1、创建自定义网络
2、创建容器,加入自定义的网络
3、ping容器名测试
## 1、创建自定义 bridge 网络模式
docker network create -d bridge demo
## 2、创建容器test1,test2
docker run -dit --name test1 --net=demo busybox
docker run -dit --name test2 --net=demo busybox
## 3、进入容器测试