多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
`--network=` 指定网络模型 **1 )Bridge模式(默认)** 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。 ![](https://img.kancloud.cn/63/f0/63f0feda193e4a223b10965be7c11064_718x495.png) 1. 此模式下的所有容器可以互相通信(也可以禁止),外部网络无法访问 2. 容器也可以访问外部网络 这里有个比较坑的地方,这个 Docker bridge模式的名字和桥接很像,但是实际上关系不大,Docker bridge模式有点像虚拟机中的 NAT 模式。 ## **2 )Host 模式** 如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。**容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。** ![](https://img.kancloud.cn/1a/cf/1acf70575b96f73897837a4a4fd07c3d_682x482.png) 容器直接使用主机的ip地址和端口 ``` docker run -d --name=nginx-volume3 --network=host -v /usr/share/nginx/html nginx ``` ![](https://img.kancloud.cn/67/fd/67fd354fa8b15f1faad709b222813573_1043x323.png) ## **3 )Container模式** 这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。 ![](https://img.kancloud.cn/15/e3/15e3e18460db38127b14ca106a48ef05_720x602.png) 这里其实与 host 模式相比,就是又多划分了一个 namespace,然后将容器放入同一个namespace中,使其共享网络,但是其他资源是隔离的。 ## **4 )None 模式** 使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等