`--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等
- docker
- docker安装
- 数据持久化
- 镜像管理
- Dockerfile
- 镜像的分层
- add copy
- 构建实例
- 镜像的导入导出
- 清理构建空间
- 配置阿里云加速器
- docker网络模型
- 本地仓库
- registry
- harbor
- IDEA部署docker
- 软件安装
- 安装es
- 安装MongoDB
- 安装rabbitmq
- 安装redis
- 安装nacos
- 安装mysql
- Minio
- 镜像中心
- kubernetes
- 1. 安装k8s
- 2.主要组件
- 3.污点
- 4.pod
- 5.控制器
- 6.网络
- 7.探针
- 8.安装Dashbord
- 9.secret
- 9.serviceAccount
- 10.service
- 资源清单
- kube-proxy
- flannel源文件
- 服务升级
- 笔记
- 镜像