容器的IP
- Docker的IP是宿主机给虚拟出来的,所以说,我们在创建容器的时候,会将宿主机的容器和容器的IP端口进行映射,因为这个IP本身只有宿主机能够访问。
- 我们可以在查看网络信息
ip addr
图片中,名为Docker0 的网络172.17.0.1 就是由宿主机虚拟出来的一个IP
- 可以随便进入一个容器,来验证这个说法。
- 回到宿主机,尝试ping一下容器的ip,发现可以ping通,不过外网是无法ping通的,因此容器只能和宿主机进行网络通信。
容器的端口
- 通过 netstat -lntup 命令可以查看所有端口的情况
可以看出Docker容器的端口是通过和宿主机的端口进行映射,来进行网络通信的。
比如,我访问的是服务器IP+80端口。实际上内容通信的是容器的ip+容器的映射端口。
容器的4种网络模式
- host模式
- container模式
- none模式
- bridge模式 (默认)
1.Host模式
- host模式并不会像上面那样,给容器虚拟一个ip,然后由宿主机进行映射,并与外界通信。而是与宿主机公用ip,并分配一个端口,并与宿主机同在一个NameSpace,直接与外界通信。
- 优点 :网络性能比较好
- 缺点: 网络的隔离性不好
2.container模式
- 容器之间共享一个ip,并在同一个NameSpace下。
3.NONE 模式
- 正如其名,这种模式下需要手动去配置容器的网络,不然默认是没有网络通信功能的,只能处于离线状态。不过这样可以确保容器的安全性。
4.bridge模式
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。