`
m635674608
  • 浏览: 4930061 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

docker 使用网桥实现跨主机容器链接

 
阅读更多
基本思想:
由于Docker容器通过docker0 网桥实现同一主机间中,容器的ip地址分配和访问,所以,如果希望Docker跨主机访问,最简单的方式就是将不同主机的docker0 设置为同一网段。
 
那么怎么实现跨主机呢?我这里将本机网卡也通过网桥来连接,那么,整体网络拓扑结构就是这样:
但是通过这种桥接,所有网卡都要在一个网段下,所以要对每个Docker守护进程对ip的分配做出限制
下面,我们就来实现这个结构:
操作:
我用的是两台centos7.1的服务器
host1:10.20.23.144 eth0
host2:10.20.23.213 eth0
具体操作如下:
以下,以Host1 为例,Host2 上操作相似,只是网卡名字不一样,我在这里,没有使用默认的docker0 网桥,而是新建了虚拟网桥.
brctl addbr br1
为网桥分配一个同网段ip
host1
ifconfig br1 192.168.2.1 netmask 255.255.255.0  
host2
ifconfig br1 192.168.2.2 netmask 255.255.255.0  
host1,host2都要操作:
 桥接本地网卡:
brctl addif br1 eth0
这里,我们就准备好了网桥设置
下面我们来修改Docker的配置,使用我们新建的网桥代替docker0:
修改 /etc/sysconfig/docker文件
host1
cat /etc/sysconfig/docker
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io -b=br1 --fixed-cidr='192.168.2.64/26' "
host2
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io -b=br1 --fixed-cidr='192.168.2.128/26' "
这里,-b 用来指定容器连接的网桥名字
     --fixed-cidr用来限定为容器分配的IP地址范围
保存文件并重启Docker服务
systemctl restart docker
 
下面,就可以来验证:
分别在两个Host上启动一个容器
docker run -it dockersdd/cct1
在容器中运行ping命令查看连接情况 
[root@5dc021f7ecf8 /]# ping 172.17.0.6
PING 172.17.0.6 (172.17.0.6) 56(84) bytes of data.
 
 
http://blog.csdn.net/sfdst/article/details/69459092
64 bytes from 172.17.0.6: icmp_seq=1 ttl=64 time=0.047 ms
分享到:
评论

相关推荐

    Docker容器跨主机通信中直接路由方式详解

    概述 就目前Docker自身默认的网络来说,单台主机上的不同Docker容器可以借助...由于使用容器的IP进行路由,就需要避免不同主机上的容器使用了相同的IP,为此我们应该为不同的主机分配不同的子网来保证。于是我们构造

    理解Docker跨多主机容器网络

    在Docker1.9出世前,跨多主机的容器通信方案大致有如下三种:1、端口映射将宿主机A的端口P映射到容器C的网络空间监听的端口P’上,仅提供四层及以上应用和服务使用。这样其他主机上的容器通过访问宿主机A的端口P实现...

    一次centos Docker网桥模式无法访问宿主机Redis服务的故障排除经历

    ② 网桥网络(docker run --network=bridge): 这也是docker容器默认的网络通信模式,容器内localhost 指向的是容器自身,不能使用 localhost 访问宿主机上localhost:6379承载的Redis服务 。 docker会默认建立...

    跨主机Docker容器互通方法

    三台服务器中,各自安装docker,并自己创建自己的网桥,如何在每台服务器中的docker容器里面互相ping通docker自定义的网桥ip

    Docker学习笔记之Weave实现跨主机容器互联

    Weave是由Zett.io公司开发的,它能够创建一个虚拟网络,用于连接部署在多台主机上的Docker容器,这样容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。外部设备能够访问...

    详解Docker容器跨主机通信的方法

    默认情况下Docker容器需要跨主机通信两个主机节点都需要在同一个网段下,这时只要两个Docker容器的宿主机能相互通信并且该容器使用net网络模式,改实现方式为网桥模式通信; 除此之外我们还可以通过使用第三方工具为...

    详解如何解决docker容器无法通过IP访问宿主机问题

    在使用 docker 的过程中我不幸需要在 docker 容器中访问宿主机的 80 端口, 而这个 80 端口是另外一个容器 8080 端口映射出去的. 当我在容器里通过 docker 的网桥 172.17.0.1 访问宿主机时, 居然发现: curl: (7) ...

    Docker容器的网络管理和网络隔离的实现

    Docker容器连接到宿主机的Docker0网桥访问外网;默认自动将docker0网桥添加到docker容器中。 2)容器和容器之间通信 需要管理员创建网桥;将不同的容器连接到网桥上实现容器和容器之间相互访问。 3)外部网络访问...

    Docker如何实现修改Docker0网桥默认网段

    Docker 服务启动后默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。 Docker 默认指定了 docker0 接口 的 IP ...

    docker 指定IP地址、与主机同网段IP

    首先讲一下docker的网络模式: ...并默认连接到docker0网桥,以此实现容器与宿主机的网络互通。如下: 2:host模式,–net=host。 这个模式下创建出来的容器,将不拥有自己独立的Network Namespace,即

    利用Docker在不同宿主机上做CentOS系统容器

    三、Docker的安装四、Docker容器在不同宿主机间通信4.1、不同宿主机间容器通信原理图4.2、不同宿主机间容器通信安装部署4.2.1、宿主机环境准备4.2.2、安装Etcd4.2.3、安装Flannel4.2.4、配置docker0虚拟网桥4.2.5、...

    Docker容器间通讯直接路由方式实现网络通讯

    单台主机上的不同Docker容器可以借助docker0网桥直接通信,这没毛病,而不同主机上的Docker容器之间只能通过在主机上用映射端口的方法来进行通信,有时这种方式会很不方便,甚至达不到我们的要求,因此位于不同物理...

    docker-autodns:单个 docker 主机上容器的简单容器间 DNS

    当其他容器启动和停止时,容器使用 docker-gen 重新配置 dnsmasq。 正确配置后,此容器将允许其他容器仅通过名称相互寻址,例如,如果您正在运行名为mycontainer的容器,该容器在端口 8080 上提供 HTTP API,那么从...

    Docker 默认bridge网络中配置DNS的方法

    Docker如何为每个容器提供主机名和DNS配置,而无需在构建自定义Docker镜像时在内部写入主机名?它的诀窍是利用可以写入新信息的虚拟文件,在容器内覆盖三个关键的/etc 文件。 你可以通过在一个容器中运行mount 来...

    sunstone:用于透明连接跨多个主机运行的 Docker 容器的工具

    Sunstone 使用 GRE()在 Docker 主机之间创建隧道。 Sunstone 在每台主机上运行并跟踪集群中所有其他主机的状态。 每个主机上的docker0网桥都分配了一个唯一的子网。 当节点加入和离开集群时,将创建和销毁将每个...

    Docker 如何分配宿主机网段 IP

    而使用传统网桥方式映射端口则 clone 等都需要输入端口号,很麻烦;22 端口宿主机又有 sshd 监听;研究了下 docker 网络,记录一下如何分配宿主机网段 IP 创建 macvlan 网络 关于 Docker 网络模式这里不再细说;由于默认...

Global site tag (gtag.js) - Google Analytics