1.简介
容器之间的通讯时通过网桥通讯的,跨主机通讯可以使用flannel进行通讯
那么为什么主机可以访问到虚拟机内部呢?因为VMware虚拟出一个虚拟的网卡,而这个虚拟网卡和主机在同一个局域网下
NAT是映射一个虚拟网卡,进行路由通信
2.能干吗
所有网络访问,必须要同一网段
底层的网络是会变动的
3.基本命令
1.创建一个网络
docker network create 网络名
2.查看一个网络
docker network inspect 网络名
4.bridge 模式
bridge模式:容器和docker0之间使用桥接的方式,docker0再到宿主机则是通过nat技术
bridge 模式在不暴露端口的情况下,那么就是使用路由方式,在通过docker0网桥,使得宿主机和docker容器网络中的容器进行通信。
bridge 模式在暴露端口的情况下,那么就是使用路由+NAT的方式,在通过docker0网桥,使得宿主机的端口和docker容器网络中的容器暴露的端口进行映射。
外界通过宿主机端口访问后,再交由底层NAT进行转发到docker容器网络中。
5.host模式
docker run -d -p 8085:8080 --network host --name tomcat85 tomcat
discarded 是被忽略了,而不是不被推荐, 因为使用到了host, 所以端口号都被忽略了
6.none
7.container
8.自定义网络
docker link 过时
docker run -d -p 6001:6001 --network 自定义网络名称
1.按照ip地址ping是ok的
2. 按照服务名ping结果 发现不到
就是使用服务名 指向容器ip 因为容器ip是变化的
总结
虚拟机的网络对应
NAT 模式 就是 docker 里的 bridge模式
桥接 模式 就是 docker 里的 host模式
host 模式 就是 docker 里的 none模式