1.bridge桥接模式(默认模式)
Docker服务默认会创建一个docker0网桥(其上有一个docker0内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通信。
docker0类似于一个交换机有一堆接口(veth),在本地主机和容器内分别创建一个虚拟接口(eth0),并让他们彼此联通。docker0成为他们的默认网关,容器可以从这个网关下各自分配IP,此时容器之间是互通的。
docker run的时候,没有指定network的话,默认使用的就是网桥模式,并接入docker0,容器之间可以通过ip访问,不可通过服务名访问
2.host模式
容器将不会获得一个独立的network namespace,而是使用宿主机的network namespace,即容器不会虚拟化出自己的ip和端口,而是直接使用虚拟机的。
注:此时使用-p指定端口映射将无效,由于直接使用宿主机的,所以没有端口映射的概念
3.none模式
在该模式下,不会为docker容器进行任何配置,也就是说,这个容器没有网卡,ip,路由等信息,只有一个lo(回环,127.0.0.1)
4.container模式
新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定容器共享ip和端口范围
两个容器除了网络方面,其他的如文件系统,进程列表等还是隔离的。
被共享的容器关闭时,共享的容器的网络也没有了。
5.自定义网络模式
docker network create mynetwork
默认也是桥接模式,但是创建的网络内部会维护ip和服务名的关系,容器和容器之间可以直接通过服务名访问