Docker容器

docker network

本文主要是介绍docker network,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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,ip发生变化怎么访问呢?

则使用服务名与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网络

这篇关于docker network的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!