设为首页 收藏本站
查看: 976|回复: 0

[经验分享] docker1.9网络新特性,overlay网络实现主机间容器互联

[复制链接]

尚未签到

发表于 2018-5-29 10:10:23 | 显示全部楼层 |阅读模式
  Docker1.9引入了新的网络机制,包括一整套的网络操作命令和跨主机的网络支持。
  该网络特性主要是为了实现容器的网络互联(单主机/跨主机),取代了之前的--link网络模式。
  

  docker网络命令:
DSC0000.png

  查看当前的docker网络:
# docker network ls
NETWORK ID         NAME               DRIVER           
a77b0f433ea0        none                null               
ddc8ce5a4767        host                host               
fdeed50789ae        bridge              bridge  刚创建的docker,包含3个默认的网络,如上:

  •   bridge:容器使用独立网络Namespace,并连接到docker0虚拟网卡(默认模式)。
  •   none:容器没有任何网卡,适合不需要与外部通过网络通信的容器。
  •   host:容器与主机共享网络Namespace,拥有与主机相同的网络设备。
  

  通过创建新的网络,我们就可以实现容器间的互联。、
  

  

  单主机容器互联:
  1:创建一个新的docker网络。

# docker network create net0
579c19e76a171d293cda54c1d93c5246537c43e01ee523010da378c1a6714f60
# docker network ls
NETWORK ID          NAME               DRIVER            
a77b0f433ea0        none                null               
ddc8ce5a4767        host                host               
fdeed50789ae        bridge               bridge                           
579c19e76a17        net0                bridge       ---出现了一个名为net0的新网络  2:创建容器,把容器关联到新建的net0网络。
# docker run -idt --name net_test1 --net net0 centos
cbe802f86e72f32c50d2d7780489476c7ccfc5badb8e2e6a37196360415ae726
# docker run -idt --name net_test2 --net net0 centos
bdc32d45a9a60007961b5df81782c866036f3f303e282912b606e0a839841649  3:测试容器网络互通:
# docker exec net_test1 ping net_test2
PING net_test2 (172.19.0.3) 56(84) bytes of data.
64 bytes from net_test2 (172.19.0.3): icmp_seq=1 ttl=64 time=0.103 ms
64 bytes from net_test2 (172.19.0.3): icmp_seq=2 ttl=64 time=0.077 ms
64 bytes from net_test2 (172.19.0.3): icmp_seq=3 ttl=64 time=0.082 ms
64 bytes from net_test2 (172.19.0.3): icmp_seq=4 ttl=64 time=0.069 ms  可以看到两个容器间可以通过容器名直接通信。
  进入容器查看/etc/hosts文件,可以看到相应的IP和HOST的映射,docker会把添加到该网络的容器与ip的映射关系写进每一个容器的/etc/hosts文件中。
DSC0001.png

  

  

  主机间的容器互联:
  在Docker的1.9中版本中正式加入了官方支持的跨节点通信解决方案,它是通过swarm+overlay网络实现的。
1:配置swarm docker集群。参考之前的博客:http://icenycmh.blog.51cto.com/4077647/1789505(swarm+zookeeper配置docker集群)

2:通过集群创建overlay网络:
集群间的swarm网路信息需要有一个存储网络信息的地方,这里可以使用zookeeper,如果没有配置,在通过swarm集群配置overlay网络时会报错。
# vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --storage-opt dm.no_warn_on_loop_devices=true --cluster-store=zk://192.168.1.110:2181/store --cluster-advertise=192.168.1.121:2375'如上,在docker启动后台添加--cluster-store=zk://192.168.1.110:2181/store --cluster-advertise=192.168.1.121:2375参数。
创建overlay网络:
# docker -H 192.168.1.121:3376 network create --driver=overlay ovr0
# docker -H 192.168.1.121:3376 network ls
NETWORK ID          NAME                    DRIVER
3e2b6eacf589        node2/docker_gwbridge   bridge              
28a5376c6b19        node2/none              null               
ddc8ce5a4767        node1/host              host               
da1289e78b54        node2/host              host               
98d31593ac87        node2/bridge            bridge              
fdeed50789ae        node1/bridge            bridge              
68e6e9d0b0a9        ovr0                  overlay     ---新建的overlay网络   
2df6c6c9b59c        node1/docker_gwbridge        bridge              
579c19e76a17        node1/net0             bridge              
a77b0f433ea0        node1/none              null通过集群查看网络,可以看到所有节点的网络信息,也可以看到集群中新增了一个overlay网络,名为ovr0。


3:通过集群创建容器:
# docker -H 192.168.1.121:3376 run -idt  --name test1 --net ovr0 docker.io/centos
ad6e5022af1ad43cd4fe04e10aa1c32d1e8aa45545866b51d8609b6705c8cc0e
# docker -H 192.168.1.121:3376 run -idt  --name test2 --net ovr0 docker.io/centos
adf2ec96ef6449364316f2a896246154a221f3899a6b8943fed21f30eea18b0e
# docker -H 192.168.1.121:3376 ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                    NAMES
adf2ec96ef64        docker.io/centos    "/bin/bash"              11 seconds ago      Up 10 seconds                                                node1/test2
ad6e5022af1a        docker.io/centos    "/bin/bash"              15 seconds ago      Up 14 seconds                                                node2/test1
16457b216799        swarm               "/swarm manage -H 0.0"   3 hours ago         Up About an hour    2375/tcp, 192.168.1.121:3376->3376/tcp   node1/lonely_archimedes
479fdbbe3235        swarm               "/swarm join zk://192"   3 hours ago         Up About an hour    2375/tcp                                 node2/drunk_bohr
e3674e871486        swarm               "/swarm join zk://192"   3 hours ago         Up About an hour    2375/tcp                                 node1/hungry_fermat以上命令在集群中创建了两个容器test1和test2,并添加进ovr0网络。可以看到test1被分配在node2节点,test1被分配在node1节点,两个容器处于不同的主机上。


4:测试不同主机上容器的联通:
# docker -H 192.168.1.121:3376 exec  test1 ping test2   
PING test2 (10.0.0.3) 56(84) bytes of data.
64 bytes from test2 (10.0.0.3): icmp_seq=1 ttl=64 time=0.601 ms
64 bytes from test2 (10.0.0.3): icmp_seq=2 ttl=64 time=0.319 ms
64 bytes from test2 (10.0.0.3): icmp_seq=3 ttl=64 time=0.307 ms
64 bytes from test2 (10.0.0.3): icmp_seq=4 ttl=64 time=0.389 ms两个容器网络已经互通。
查看两个容器的/etc/hosts文件,可以看到相应的IP:容器映射信息。
DSC0002.png






  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482461-1-1.html 上篇帖子: ssh登录docker容器 下篇帖子: 【VMCloud云平台】拥抱Docker(五)Volume(2)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表