Docker 多台物理主机之间的容器互联

Docker 默认的桥接网卡是 docker0。它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 veth* 而 Docker 只是把所有这些网卡桥接在一起,如下:

20160715093900

在容器中看到的地址一般是像下面这样的地址:

20160715093909

这样就可以把这个网络看成是一个私有的网络,通过 nat 连接外网,如果要让外网连接到容器中,就需要做端口映射,即 -p 参数。

如果在企业内部应用,或者做多个物理主机的集群,可能需要将多个物理主机的容器组到一个物理网络中来,那么就需要将这个网桥桥接到我们指定的网卡上。

拓扑图

主机 A 和主机 B 的网卡一都连着物理交换机的同一个 vlan 101,这样网桥一和网桥三就相当于在同一个物理网络中了,而容器一、容器三、容器四也在同一物理网络中了,他们之间可以相互通信,而且可以跟同一vlan 中的其他物理机器互联。

20160715094026

ubuntu 示例

下面以 ubuntu 为例创建多个主机的容器联网: 创建自己的网桥,编辑 /etc/network/interface 文件

auto br0
iface br0 inet static
address 192.168.7.31
netmask 255.255.240.0
gateway 192.168.7.254
bridge_ports em1
bridge_stp off
dns-nameservers 8.8.8.8 192.168.6.1

Docker 的默认网桥绑定到这个新建的 br0 上面,这样就将这台机器上容器绑定到 em1 这个网卡所对应的物理网络上了。

ubuntu 修改 /etc/default/docker 文件,添加最后一行内容

# Docker Upstart and SysVinit configuration file
# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"
# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"
# This is also a handy place to tweak where Docker's temporary files go.
#export TMPDIR="/mnt/bigdrive/docker-tmp"
DOCKER_OPTS="-b=br0"

在启动 Docker 的时候 使用 -b 参数 将容器绑定到物理网络上。重启 Docker 服务后,再进入容器可以看到它已经绑定到你的物理网络上了。

20160715094132

这样就直接把容器暴露到物理网络上了,多台物理主机的容器也可以相互联网了。需要注意的是,这样就需要自己来保证容器的网络安全了。

Docker入门教程
Docker简介 Docker基本概念 Docker安装
什么是Docker i.镜像 使用Debian操作系统安装Docker
为什么要用Docker ii.容器 使用CentOS操作系统安装Docker
iii.仓库 使用Ubuntu操作系统安装Docker
Docker images镜像详细介绍 Docker容器 Docker仓库
获取Docker images Docker容器启动 Docker Hub
查找Docker images Docker容器新建 私有仓库
下载Docker images Docker容器终止 Docker配置文件
创建我们自己的Docker images Docker容器进入容器
Docker容器导出和导入
Docker容器删除
Docker数据管理 Docker网络 Docker高级网络配置
数据卷容器 外部访问容器 快速配置指南
数据卷备份、恢复、迁移 容器互联 配置 DNS
容器访问控制
端口映射实现
配置 docker0 网桥
自定义网桥
实例:创建一个点到点连接
Docker安全 Dockerfile Docker底层实现
i. 内核名字空间 i. 基本结构 i. 基本架构
ii. 控制组 ii. 指令 ii. 名字空间
iii. 服务端防护 iii. 创建镜像 iii. 控制组
iv. 内核能力机制 iv. 联合文件系统
v. 其它安全特性 v. 容器格式
vi. 总结 网络
Docker实战案例
使用 Supervisor 来管理进程
创建 tomcat/weblogic 集群
多台物理主机之间的容器互联
标准化开发测试和生产环境
K8S中文社区微信公众号
分享到:更多 ()