理解Docker0
三个网络
问题:docker如何处理容器网络访问的
原理:我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有网卡一个docker0桥接模式,使用的技术是evth-par技术。 我们会发现每个容器带来的网卡都是一对一对的,evth-par就是一对的虚拟设备接口,它们都是成对出现的,一段连着协议,一端彼此相连。正因为有这歌特性,evth-par可以充当一个桥梁来连接虚拟网络设备。Openstack、docker容器之间链接和OVS连接都是使用evth-par技术。
例如:
其中tomcat01和tomcat02共用一个公用路由器docker0.所有容器在不指定网络的情况下,都是docker0路由的,docker0会给我们路由器一个默认的ip
小结: Docker使用的是linux的桥接,宿主机中是一个docker容器的网桥docker0。
Docker中所有的网络接口都是虚拟的,因为虚拟的转发效率高。只要容器删除,对应的网桥就没有了。
docker0:
探究docker0里的网络:docker networ inspect id
查看一个容器绑定的网络:docker exec -it id cat/etc/hosts,这样--link本质是在hosts配置中添加ip地址,现在已经不推荐使用了
因此现在需要自定义网络,不使用docker0,因为docker0不支持容器明连接访问。
自定义网络
查看所有docker网络:docker network ls
网络模式
- bridge:桥接模式,就是在docker上拉桥。
- none:不配置网络。
- host:和宿主机共享网络。
- container:容器网络联通(用的少,局限性大)。
测试
自己的网络: