docker如何处理网络访问的
1丶没启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就有有一个网卡docker0桥接模式,使用的技术就是veth-pair技术!
# 我们发现容器带来网卡都是一对一对的# veth-pair 就是一对的虚拟设备接口,一段连接诶协议,一段彼此相连# veth-pair 充当一个桥梁,连接各种虚拟网络设备# Docker容器之间连接,ovs的连接,都是用veth-pair连接的

结论:tomcat01和tomcat02是公用的一个路由器。docker0
素有的容器不指定网络的情况下,都是douckero路由的,docker会给我们容器分配一个默认可用的ip
docker使用的是linux的桥接 ;宿主机中是一个Docker容器的网桥,docker0
Docker中所有的网络接口都是虚拟的,虚拟的转发效率高!(内网传递文件)
容器删除,对应一对网桥就没了
—link
思考一个场景,我们编写了一个微服务,database url=ip:,项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以名字来进行访问容器?docker exec -it tomcat02 ping tomcat01ping:tomcat01:Name orsercier not known#如何解决docker run -d -p --name tomcat03 --link tomcat02 tomcatdocker exec -it tpmcat03 ping tonmcat02

#反向可以ping通吗?
不可以
—link 在hosts配置中增加了一个172.18.0.3(已过时)
docker0问题:他不支持容器名连接访问
自定义网络
网络模式
bridge :桥接 docker 默认
none :不配置网络
host :和宿主机共享网络
container:容器网格联通!(局限很大,比较少用)
测试
docker run -d -p --name tomcat01 tomcatdocker run -d -p --name tomcat01 --net baridge tomcat##创建自定义网络docker network create-driver bridge --subnet 192.168.0.0/16 --geteway 192.168.0.1
自定义网络
可以代替—link
自定义的网络帮我们维护好了对应的关系,推荐
好处:
不同的集群可以使用不同的网络
网络连通
docker network connet 连通一个容器网络

# docker network connect [OPTIONS] NETWORK CONTAINERdocker network connect mynet tomcat01 #将tomcat01放到了mynet网格下#一个容器两个ip 就像一个阿里云服务器有公网ip也有内网ip

结论:假设需要跨网络操作别人,就需要使用docker network connect连通
三个网络:
