docker 如何处理网络访问
docker容器里项目访问项目
测试
docker run -d -P --name tomcat01 tomcat
拉一个tomcat7.0有net-tools
docker run -d -P --name tomcat01 tomcat:7.0
docker exec -it tomcat01 ip addr
linux可以ping通容器
每启动一个docker容器
docker就会给容器分配ip 只要安装docker 就会有网卡
docker为桥接模式,使用的技术是evh-pair技术
启动容器后,linux有了新网卡,两边网卡差不多相似
再次启动容器
docker run -d -P --name tomcat02 tomcat:7.0
evth-pair 容器带来的网卡都为一对
evth-pair 充当桥梁 连接虚拟网络设备
openstack docer ovs 都是evth-pair技术
tomcat01 能ping通 tomcat02
容器与容器间可以互相ping通
通过linux作为路由器,转发到tomcat02
docker使用linux的桥接
docker所有网络接口都是虚拟的 虚拟的转发效率高
容器删除后,对应网桥的一对直接无了
则使用服务名与docker绑定
--link
[root@docker ~]# docker exec -it tomcat02 ping tomcat01
无法ping通
[root@docker ~]# docker run -d -P --name tomcat03 --link tomcat02 tomcat:7.0 5725478926a43edbe5eabdb1b0188e747a675a4e1e476e8a5df47d924b7d0d7b [root@docker ~]# docker exec -it tomcat03 ping tomcat02 PING tomcat02 (172.17.0.3) 56(84) bytes of data. 64 bytes from tomcat02 (172.17.0.3): icmp_seq=1 ttl=64 time=0.125 ms 64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.058 ms
可以ping通
通过服务名来访问可以ping通
[root@docker ~]# docker exec -it tomcat02 ping tomcat03
相反则不行
查看docker网络
[root@docker ~]# docker network ls NETWORK ID NAME DRIVER SCOPE a4d70d5796e4 bridge bridge local fc2805a7d397 host host local c680f1ffd777 none null local [root@docker ~]#
docker network inspect a4d70d57
通过inspect来看
[root@docker ~]# docker exec -it tomcat03 cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 tomcat02 f8163365d0d8 172.17.0.4 5725478926a4 [root@docker ~]#
link配置etc/hosts
自定义网络!不使用docker0
定义docker网络