Docker的网络有四种类型,分别为host模式,none模式,container模式,bridge模式。
创建容器时,可以使用"-net=host"指定。
启动的容器如果指定了网络类型为host模式,那么新创建的容器不会创建自己的虚拟网卡,而是直接使用宿主机的网卡和IP地址,因此容器里面查看到的IP信息就是宿主机的信息,访问容器的时候直接使用"宿主机IP:容器端口"即可,不过容器的其它资源们比如文件系统,系统进程等还是和宿主机保持隔离。
此模式的网络性能最高,但是各容器之间端口不能相同(因为该模式直接使用的是宿主机的网络),适用于运行容器端口比较固定的业务,比如Mysql,Redis等。
创建容器时,可以使用"-net=none"指定。
在使用none模式后,docker容器不会进行任何网络配置,其没有网卡,没有IP也没有路由,因此默认无法与外界通信,需要手动添加配置IP等,所以极少使用。
创建容器时,可以使用"-net=container:容器名称或容器ID"指定。
使用此模式创建的容器需指定和一个已经存在的容器共享一个网络,而不是和宿主机共享网络,换句话说,就是两个容器公用同一个IP地址。
新创建的容器不会创建自己的网卡也不会配置自己的IP,而是和一个已经存在的被指定的容器IP和端口范围,因此这个容器的端口不能和被指定的端口冲突,除了网络之外的文件系统,进程信息等仍然保持相互隔离,两个容器的进程可以通过lo网卡设备通信。
docker的默认模式即不指定任何模式就是bridge模式,也是使用比较多的模式,此模式创建的容器会为每一个容器分配自己的网络IP等信息,并将容器连接到一个虚拟网桥与外界通信。