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



相关文章
|
8月前
|
应用服务中间件 Linux Shell
Docker(三) 容器间及其容器和宿主间数据共享
Docker(三) 容器间及其容器和宿主间数据共享
223 0
|
9月前
|
数据库 Docker 容器
Docker之容器互联--link
Docker之容器互联--link
109 0
|
网络安全 Docker 容器
容器docker不同主机之间互联-macvlan
容器docker不同主机之间互联-macvlan
215 0
容器docker不同主机之间互联-macvlan
|
Cloud Native 数据管理 Linux
【云原生Docker篇】Docker的数据管理(数据卷、容器互联)
用户在使用Docker的过程中,往往需要能查看容器内应用产生的数据,或者需要把容器内的数据进行备份,甚至多个容器之间进行数据的共享,这必然涉及容器的数据管理操作。 容器中管理数据主要有两种方式: 数据卷(Data Volumes) 数据卷容器(Data Volume Dontainers)
143 0
|
消息中间件 关系型数据库 MySQL
Docker网络互联原理和比较不同模式以及自定义网络的使用总结
Docker网络互联原理和比较不同模式以及自定义网络的使用总结
Docker网络互联原理和比较不同模式以及自定义网络的使用总结
|
Cloud Native Linux SDN
【云原生 | 11】Docker之端口映射与容器互联
本篇文章通过具体案例讲解了Docker容器服务访问的两大基本操作,包括基础的容器端口映射机制和容器互联机制。同时,Docker目前可以成熟地支持Linux系统自带的网络服务和功能,这既可以利用现有成熟的技术提供稳定支持,又可以实现快速的高性能转发。.........
524 0
【云原生 | 11】Docker之端口映射与容器互联
|
安全 应用服务中间件 Docker
Docker 容器互联 --link 和 自定义网络
本文是博主学习docker 容器互联的记录,希望对大家有所帮助
264 0
Docker 容器互联 --link 和 自定义网络
|
存储 缓存 网络协议
Docker容器间网络互联原理,讲不明白算我输
一、今天我们要搞明白的实验 同一个宿主机上的不同容器之间的网络如何互通的??? 二、前置网络知识
431 0
Docker容器间网络互联原理,讲不明白算我输
|
Docker 容器
Docker----容器名互联link技术及其本质
Docker----容器名互联link技术及其本质
149 0
|
缓存 网络协议 网络安全
Docker容器间网络互联原理,讲不明白算我输.... (二)
Docker容器间网络互联原理,讲不明白算我输.... (二)
288 0
Docker容器间网络互联原理,讲不明白算我输.... (二)