1.docker集群间容器是否可以通信。

创建容器服务来测试:docker service create --name tomcat1 --replicas 2 192.168.56.200:5000/tomcat

跨主机容器间通讯解决方案_第1张图片
跨主机容器间通讯解决方案_第2张图片
测试结果ping不通。
跨主机容器间通讯解决方案_第3张图片

2.docker 在早前的时候没有考虑跨主机的容器通信,这个特性直到 docker 1.9 才出现。在此之前,如果希望位于不同主机的容器能够通信,一般有几种方法:
使用端口映射:直接把容器的服务端口映射到主机上,主机直接通过映射出来的端口通信
把容器放到主机所在的网段:修改 docker 的 ip 分配网段和主机一致,还要修改主机的网络结构
第三方项目:flannel,weave 或者 pipework 等,这些方案一般都是通过 SDN 搭建 overlay 网络达到容器通信的

解决方案:创建overlay网络
docker network create -d overlay net
docker network ls
跨主机容器间通讯解决方案_第4张图片
再创建容器进行测试
docker service create --name tomcat2 --mode global --network net 192.168.56.200:5000/tomcat
跨主机容器间通讯解决方案_第5张图片![]

跨主机容器间通讯解决方案_第6张图片
创建镜像信息:docker inspect cf2bb17e353e
跨主机容器间通讯解决方案_第7张图片
有了overlay网络可以ping通了。
跨主机容器间通讯解决方案_第8张图片

两个容器可以通信是因为加了一个overlay层。
跨主机容器间通讯解决方案_第9张图片