以下内容只是命令,原理自行百度,google或者官方查阅!

方案一、overlay Consul

三台主机为例(都要安装docker):

192.168.20.20(consul服务)

192.168.20.21(host1)

192.168.20.22(host2)

1、在consul服务主机安装consul服务容器

docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

2、host1、host2主机上修改以下内容

vi /usr/lib/systemd/system/docker.service 在ExecStart追加

--cluster-store=consul://192.168.20.20:8500 --cluster-advertise=ens192:2376

--cluster-store 指定 consul 的地址。
--cluster-advertise 告知 consul 自己的连接地址。

3、重启docker

systemctl daemon-reload
systemctl restart docker.service

4、创建docker网络

在host1或者host2其中任何一台创建即可,后续consul有自动发现服务

在 host1 中创建 overlay 网络 ov_net1 (创建网络的时候可以--subnet指定子网信息,不指定系统自动分配)

[root@ubuntu ~ [host1]]# docker network create -d overlay ov_net1
49a8ea9add6a80d44cbd6becf22d66af40072cf9c3a346d66f94a6e72d8042e5

-d overlay 指定 driver 为 overlay。

[root@ubuntu ~ [host1]]# docker network ls
NETWORK ID NAME DRIVER SCOPE
d0829fccb85c bridge bridge local
f59af6b0b523 host host local
2613e0c2029e none null local
49a8ea9add6a ov_net1 overlay global

此时在host2上docker netwoker ls 会发现和host1一样,多了个ov_net1的网络。(自动发现)

5、创建容器

在 host1 运行一个 centos容器bbox1并连接到 ov_net1

[root@ubuntu ~ [host1]]# docker run -itd --name bbox1 --network ov_net1 centos
5246d782fc8fd30890bcf2bb34374c54db3ee277cae585572f4b20129b68e3fe

在 host2 运行一个centos容器bbox2并连接到 ov_net1

[root@ubuntu ~ [host1]]# docker run -itd --name bbox2 --network ov_net1 centos
33f33dc7ce094579269f3137767dc82f7b714e96766de87570a1de8a4eefd640

6、互通测试

此时bbox1容器已经可以ping通bbox2,bbox2也一样可以ping通bbox1

(直接ping 容器名即可{即bbox1,bbox2})

===========================================================================

方案二、weave 

还是以host1和host2为例:

在host1和host2上都安装weave执行文件

curl -L git.io/weave -o /usr/local/bin/weave
chmod a+x /usr/local/bin/weave

1、在host1上启动weave容器

weave launch --no-detect-tls

2、以weave proxy方式启动容器webox1

eval $(weave env)
docker run --name webox1 -itd centos

  

3、host2上启动weave容器并连接到host1

weave launch 192.168.20.21 --no-detect-tls

4、以weave proxy方式启动容器webox2

eval $(weave env)
docker run --name webox2 -itd centos

5、互通测试

此时webox1容器已经可以ping通webox2,webox2也一样可以ping通webox1

另:也可在weave launch的时候加入--ipalloc-range=192.168.100.0/24 配置weave网段。

  还可以在docker run运行一个容器的时候加入变量 -e WEAVE_CIDR=xxx.xxx.xxx.xxx 指定该容器所在的网络

  

docker跨主机互联的更多相关文章

  1. Docker容器利用weave实现跨主机互联

    Docker容器利用weave实现跨主机互联 环境: 实现目的:实现主机A中容器1与主机B中容器1的网络互联 主机A步骤: ①下载复制weave二进制执行文件(需要internet)[root@192 ...

  2. Docker跨主机网络——overlay

    前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...

  3. Docker多主机互联最佳实践

    在公司使用docker多主机互联时碰到了各种坑.搞清楚后才发现如此简单,以下是根据实际经验的总结. 版本信息 Client: Version: 18.09.0 API version: 1.39 Go ...

  4. 基于Ceph分布式集群实现docker跨主机共享数据卷

    上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷. 1.环境准备 在原来的环境基础之上,新增一台cen ...

  5. Docker跨主机网络实践

    Docker使用中网络管理是最麻烦的,在项目初始化前期就需要进行合理的规划,如果在比较理想的单主机的网络通信是比较简单的,但如果涉及到跨主机的网络就需要使用docker自带的overlay netwo ...

  6. 如何使用Flannel搭建跨主机互联的容器网络

    当您将多台服务器节点组成一个Docker集群时,需要对集群网络进行设置,否则默认情况下,无法跨主机容器互联,接下来我们首先分析一下原因. 跨主机容器互联 下图描述了一个简单的集群网络,在该集群内,有两 ...

  7. Docker 跨主机网络方案分析

    PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...

  8. Docker跨主机通信(九)--技术流ken

    容器网络 在前面的博客中已经详细讲解了几种网络方案: none, host, bridge,user-defined.但是他们只是解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信.本 ...

  9. centos7下安装docker(16.docker跨主机存储)

    从业务数据的角度看,容器可以分为两类:无状态(stateless)容器和有状态(stateful)容器. 无状态:是指容器在运行的过程中不需要保存数据,每次访问的结果不依赖上一次的访问,比如提供静态页 ...

随机推荐

  1. Mac OS Alfred 2 tips

    From: http://www.uuair.cn/?p=64 写这个东西,我没敢叫指南之类,只能算是技巧,因为Alfred这个软件的强大,我还没研究明白,还有好多功能自己没搞懂,所以写一些我发现或者 ...

  2. apache-tomcat-7.0.8\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform

    问题: apache-tomcat-7.0.8\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform 解决:jd ...

  3. 关于 javascript:void(0) 的问题.

    原文地址:楚广明的博客 http://www.cnblogs.com/chu888chu888/archive/2012/01/05/2313045.html 最近看了好几个关于<a>标签 ...

  4. Python VIL Service Bin

    #!/usr/bin/python #coding:UTF-8 import sys import re import getopt import md5 import os import subpr ...

  5. Java 中的包装类

    Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能简 ...

  6. mysql-13处理重复数据

    1.防止表中出现重复数据 在mysql数据表中设置指定的字段为主键或唯一索引来保证数据的唯一行. -- 方法1:指定主键 create `table person_tbl`( `first_name` ...

  7. Hive文件的存储格式

    hive文件存储格式包括以下几类: TEXTFILE SEQUENCEFILE RCFILE 自定义格式 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到h ...

  8. Hive 的查询结果直接导入到 MySQL 中的方法

    步骤一: hive> add jar /setup/hive/lib/mysql-connector-java-5.1.25-bin.jar; hive> add jar /usr/lib ...

  9. python操作excel表格文件--使用xlrd模块

    原文: http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 引言: 实际工作中,可能很多情况下都会用到excel表格,像如果不需 ...

  10. 1.2 auth2.0

    多个应用 入sina  qq  msn  豆瓣 等 在手机登录时或终端登录时如果统一可以根据硬件做 gettid()-为了保证唯一性:方案一:      事先生成唯一验证码:使用一个isue 设置为1 ...