Docker中网络模式分类
- bridge模式,–net=bridge(默认)
- host模式,–net=host
- container模式 使用–net =container:指定容器名
- none模式,–net=none
关于Docker网络模式详解
bridge模式(默认)
当我们安装完docker后,输入ifconfig就会发现有个
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:f5ff:fe4d:c2c6 prefixlen 64 scopeid 0x20<link>
ether 02:42:f5:4d:c2:c6 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 196 bytes 36997 (36.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
容器会通过DHCP获取一个和docker0相同网段的IP地址,并连接到网桥,将docker0作为网关与宿主机进行网络通讯,同一个宿主机下使用bridge模式的容器都可以直接通讯
host模式
容器将不会虚拟出自己的网卡,配置自己的IP等,而是直接使用宿主机的IP和端口,但是文件系统是和宿主机隔离的
这种创建出来的容器,可以看到host上所有的网络设备。容器中,对这些设备(比如DUBS)有全部的访问权限。因此docker提示我们,这种方式是不安全的。如果在隔离良好的环境中(比如租户的虚拟机中)使用这种方式,问题不大。
container模式
这种生产环境肯定不会使用,因为这样端口一多就乱,在启动时需要指定一个已经存在的容器,然后这个新的容器和已经存在的容器使用相同用的网络IP
none模式
在none模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等