使用Docker Swarm创建Overlay Network

本文讲的是使用Docker Swarm创建Overlay Network 【编者的话】 上一篇 文章中探讨了关于Docker Swarm的一些问题,这篇文章来看一下如何使用Docker Swarm创建Overlay Network。

上一篇文章 ,我们介绍了在云端服务器创建Docker主机的工具:Docker Machine。如果是在Windows 和 OS X,Docker Machine可以很方便做本地测试,但是当用Docker Machine在你喜欢的云主机上启动Docker主机、创建集群时在也添加了另一个维度。

后来我们使用Machine直接进入高级的主题,使用Docker Swarm来创建一个Docker主机集群。生产级别的分布式应用需在在Docker主机集群上部署。这篇文章中,我们使用Docker Swarm设置允许主机之间的容器互相访问的网络。实际上,Swarm集群允许我们使用本地Docker单一的主机网络,也允许我们创建依赖VXLAN的overlay network。在overlay中启动的容器可以和容器之外的应用互相通信。这篇文章介绍了使用Docker Swarm如何创建、使用、测试一个overlay network。

创建Overlay Network

设置Swarm之后,你就可以依你习惯的方式立即开始管理你的容器了。Docker将会自动使用一个所谓“bridge”的网络模式管理,尽管这是很好的,而且你也可以把你的服务暴露在你的主机上。当你不得不把服务绑定在主机上而启动多个主机的容器,而且要让这些容器知道怎么发现彼此两者之间的网络通信时,这是非常复杂的。

Libnetwork 提供可以用于你容器的overlay network,以至于他们可以出现在相同的子网上。他们可以互相通信而且相互获取DNS名称,使之在网络上很容易被发现。

Swarm主机或者工作节点作为你的工作的Docker Machine,你可以使用  docker network create 命令创建一个overlay network,如下面操作:
$ docker network create foobar 

165e9c2bafab44513da2f26426216217dc69ca2cd021f966ccc64e7c6bf898d9

你可以查看可用的网络列表,会看到多个网络,每一个主机都一个 bridge ,一个 host 和一个 none 的网络,这三种网络类型也可以在单个Docker引擎中设置,‘bridge’网络是默认的设置。我们在上面创建的 foobar overlay出现在查询的列表中,而且全局存在在我们的Swarm主机。
$ docker network ls 
NETWORK ID                    NAME                      DRIVER 
2c48d476867e     swarm-master/bridge bridge 0b6ae86378f3   swarm-master/none null
967c471c311c     swarm-master/host host 01f3d280bc68   swarm-node-1/bridge bridge 
d0f929b000bc    swarm-node-1/none null 71550dff8c32    swarm-node-1/host host 165e9c2bafab foobar overlay

使用 Overlay Network

使用overlay network,我们可以在swarm中开启容器,可以给它设置一个名字指定  foobar  作为我们的网络,例如:
$ docker run -d --name=foo --net=foobar nginx 
$ docker run -d --name=bar --net=foobar nginx

监听容器,我们可以查询到已经启动的主机。你可能不得不深入Swarm调度策略来理解Swamp是如何选择主机运行容器。Swarm也可能在同一个主机上调度两个测试容器。在下面的测试中,我们拥有两个工作节点,Swarm调度我们的两个容器,然后将容器传播进入集群。
$ docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
21587d81505d nginx "nginx -g 'daemon off" 2 seconds ago Up 2 seconds 80/tcp, 443/tcp swarm-node-1/bar 
6d66dc56af4f nginx "nginx -g 'daemon off"   9 seconds ago Up 8 seconds 80/tcp, 443/tcp swarm-node-2/foo

测试 Overlay Network

这种方法允许我们测试我们的overlay networking。如果上述命令运行正常,我们应该已经在相同的overlay network,尽管他们再单独的主机上。这也意味着我们可以使用容器的名字就可以 ping 通两个容器--这个名字是我们已经注册号的DNS名称。让我们测试一下,让我们使用  docker exec 测试一下。
$ docker exec -ti swarm-node-1/bar ping -c 1 foo 
PING bar (10.0.0.3): 56 data bytes 64 bytes from 10.0.0.3: icmp_seq=0 ttl=64 time=1.433 ms --- bar
ping statistics --- 1 packets transmitted, 1 packets received, 
0% packet loss round-trip min/avg/max/stddev = 1.433/1.433/1.433/0.000 ms

的确,我们可以从 bar 容器ping 通 foo ,相反也可以通过 foo ping通 bar
$ docker exec -ti swarm-node-2/foo ping -c 1 bar

PING foo (10.0.0.2): 56 data bytes

64 bytes from 10.0.0.2: icmp_seq=0 ttl=64 time=0.984 ms
--- foo ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.984/0.984/0.984/0.000 ms

就像上述的在Docker中的多主机网络环境,容器可以根据Swamp调度使用overlay network与内部私有的IP通信。

将来的博客我想回到Docker Compose话题,看看我们如何利用一个Swarm创建一个真正的分布式应用,那种容器可以在不同的网络上独立启动 ,我们也可以独立监测每一个服务。

原文链接:using docker swarm create overlay network(翻译:ylzhang)

原文发布时间为: 2016-05-25
本文作者:ylzhang
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:使用Docker Swarm创建Overlay Network
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/225597

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。