Docker网络
理解 Docker0
1 | root@9-134-239-95:tomcat# ip addr |
1 | docker run -d -P --name centos01 centos:7 |
1 | 再到 宿主机下执行 ip addr |
原理
- 我们每启动一个 docker 容器,docker 就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡 docker0 桥接模式,使用的技术是 evth-pair 技术
- 我们发现这个容器的网卡都是成对出现的。evth-pair 就是一对虚拟设备接口,他们都是成对出现的,一段连接着协议,一段彼此连接。正因为有这个特性,evth-pair 充当一个桥梁,连接各种虚拟网络设备。
- 同一个宿主机下的容器间是可以互通的。tomcat01 和 tomcat02 是公用的一个路由器 docker0 。所有的容器不指定网络的情况下,都是docker0 路由的,docker 会给我们的容器分配一个默认的可用IP。
小结
Docker使用的是 linux 的桥接,宿主机中是一个Docker容器的网桥 docker0
Docker 中的所有的网络接口都是虚拟的。虚拟的转发效率高。只要容器删除,对应的网桥一对也就没有了
–link
通过容器名字可以访问嘛?使用 link 技术
1 | docker run -it --name centos01 centos:7 |
原理
1 | root@9-134-239-95:~# docker exec -it centos02 cat /etc/hosts |
–link 就是在 hosts 配置中增加了 192.168.10.2 centos01 11f2400fc0f4
现在不建议使用 –link,不适用于 docker0,docker0 问题:不支持容器名连接访问。
自定义网络
1 | 查看所有的 docker 网络 |
网络模式
- bridge:桥接模式(默认)
- none:不配置网络
- host:和宿主机共享网络
- container:容器内网络连通(用得少,局限很大)
1 | 我们直接启动的命令 默认自带 --net bridge,而这个就是我们的 docker0 |
查看自己的网络的详细信息
1 | root@9-134-239-95:~# docker network inspect c4206da2444d |
我们自定义的网络docker 都已经帮我们维护好了对应的关系,推荐我们平时这样使用网络
好处:
不同的集群使用不同的网络,保证集群是安全和健康的
网络连通的操作
1 | 让一个容器连接到网段 |
结论:假设要跨网络操作别的容器,就要使用 docker network connect 去连通
部署redis集群
先去学习 redis 集群