Docker 多宿主互联

在之前的docker简介中介绍了一些docker基础的操作,在涉及到多台不同的宿主机上运行docker时应该如何使他们之间进行通信呢,这是这篇文章的主要内容。

docker 可以使用多种集群的解决方案,如k8s,mesos等,这个将在后面的内容中一一介绍,这里我们将使用docker原生的组件进行连接。


环境准备

两台宿主机,都安装docker. 并下载官方的centos镜像。


网络配置

在宿主机node1和node2上分别查看默认的docker0网络:

1
2
3
4
5
node1:
docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
     link /ether  02:42:c2:a4:d3:e0 brd ff:ff:ff:ff:ff:ff
     inet 172.17.0.1 /16  scope global docker0
        valid_lft forever preferred_lft foreve
1
2
3
4
5
node2:
docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
     link /ether  02:42:2e:be:83:69 brd ff:ff:ff:ff:ff:ff
     inet 172.17.0.1 /16  scope global docker0
        valid_lft forever preferred_lft forever

两个内部的网段相同,如果创建容器,两个网络肯定无法互联,所以我们修改默认docker0网络,并且使这两个网络不会和外部的网络冲突。

在node2上的 /usr/lib/systemd/system/docker.service 文件中ExecStart=区域添加参数:

1
--bip=10.10.0.1 /16  \

重启docker服务。


分别在node1和node2上创建容器:

1
2
3
4
node1:
docker run -it --name test1 centos   bash
node2:
docker run -it --name test2 centos   bash

这时test1的ip地址为172.17.0.2, test2的地址为10.10.0.2, 两个虚拟机都是走的宿主机的内部nat,所以依然无法通信。
而容器到node1和node2宿主机都是可以正常通信的,由于我们都是设置的不同网段,所以可以在每个宿主机上单独添加一条静态路由,指定数据包的流向:

node1:

1
route add -net 10.10.0.0 /16  gw 192.168.56.12

node2:

1
route add -net 172.17.0.0 /16  gw 192.168.56.11

这样不同宿主机上的容器就可以互联了。

这种方式虽然简单高效,但是如果是大规模的docker集群,会难以维护,同时由于docker容器都在不同宿主机的不同网段,需要使用网络组播和广播交互的服务就无法跨主机通信了


 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1945943



优秀的个人博客,低调大师

微信关注我们

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

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

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

相关文章

发表评论

资源下载

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

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

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

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

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

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

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。