第七章容器网络与redis集群部署

Docker网络

vethpair:成对出现的一种虚拟网络设备,数据从一端进,从另一端出。用于解决网络命名空间之间隔离。

docker0:网桥是一个二层网络设备,通过网桥可以将Linux支持的不同端口连接起来,并实现类似交换机那样的多对多的通信。

理解Docker0

做这一步先把所有镜像和容器删干净

删除全部镜像:dockerrmi$(dockerimages-aq)

删除全部容器:dockerrm-f$(dockerps-aq)

三个网络

查看容器的内部地址ipaddr

[root

localhost/]#dockerexec-ittomcat01ipaddr

遇到问题,查看容器的内部地址出错

[root

localhost/]#dockerexec-ittomcat01ipaddr

OCIruntimeexecfailed:execfailed:container_linux.go:80:startingcontainerprocesscaused:exec:"ip":executablefilenotfoundin$PATH:unknown

解决问题:

1、进入容器输入安装依赖

root

cf4e8dd:/usr/local/tomcat#aptupdate

root

cf4e8dd:/usr/local/tomcat#aptinstall-yiproute2

2、再次测试成功

[root

localhost/]#dockerexec-ittomcat01ipaddr

1:lo:LOOPBACK,UP,LOWER_UPmtuqdiscnoqueuestateUNKNOWNgroupdefaultqlen

link/loopback00:00:00:00:00:00brd00:00:00:00:00:00

inet.0.0.1/8scopehostlo

valid_lftforeverpreferred_lftforever

2:eth0

if9:BROADCAST,MULTICAST,UP,LOWER_UPmtuqdiscnoqueuestateUPgroupdefault

link/ether02:42:ac:11:00:02brdff:ff:ff:ff:ff:fflink-netnsid0

inet.17.0.2/16brd.17..scopeglobaleth0

valid_lftforeverpreferred_lftforever

结果:Linux可以ping通docker容器内部

原理原理一

1.我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair技术!再次测试ipaddr

原理二

2、#我们发现这个容器带来的网卡,都是一对对的

#evth-pair就是一对虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连

#正因为有这个特性,evth-pair充当一个桥梁,连接各种虚拟网络设备的

#OpenStac,Docker容器之间的连接,OVS的连接,都是使用evth-pair技术

原理三

.我们来测试下tomcat01和tomcat02是否可以ping通!

[root

localhost/]#dockerexec-ittomcat02ping.18.0.2

#结论:容器和容器之间是可以互相通信的!

绘制一个网络模型图:结论

1、tomcat1和tomcat02是公用的一个路由器,docker0.

2、所有的容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用IP

、Docker中的所有的网络接口都是虚拟的。虚拟的转发效率高!(内网传递文件!)

只要容器删除,对应网桥一对就没了!

使用--link连接

思考一个场景,我们编写了一个微服务,databaseurl=ip;,项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以用名字来访问容器?

测试使用ping容器名出错

[root

localhost/]#dockerexec-ittomcat0pingtomcat02

OCIruntimeexecfailed:execfailed:container_linux.go:80:startingcontainerprocesscaused:exec:"ping":executablefilenotfoundin$PATH:unknown

解决报错问题

1、进入容器内

dockerexec-it容器自定义名称/bin/bash

2、运行下面命令

apt-getupdate

、出现bash:ping:


转载请注明:http://www.aierlanlan.com/rzfs/8071.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了