配置Docker多台宿主机间的容器互联

如果要在生产和测试环境大规模采用docker技术,首先就需要解决不同物理机建的docker容器互联问题。本文介绍在centos7环境下采用open vswitch实现不同物理服务器上的docker容器互联的配置。

环境介绍:

Server1: 192.168.115.5/24

Server2: 192.168.115.6/24

一:在Server1和Server2上分别用rpm方式安装docker并启动服务

# yum list *docker*
# yum -y install docker
# service docker start
Redirecting to /bin/systemctl start  docker.service

二: 在Server1和Server2上分别安装open vswitch

# yum -y install wget openssl-devel kernel-devel
# yum groupinstall "Development Tools"
# adduser ovswitch
# su - ovswitch
$ wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz
$ tar -zxvpf openvswitch-2.3.0.tar.gz 
$ mkdir -p ~/rpmbuild/SOURCES
$ sed ‘s/openvswitch-kmod, //g‘ openvswitch-2.3.0/rhel/openvswitch.spec > openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec
$ cp openvswitch-2.3.0.tar.gz rpmbuild/SOURCES/
 
$ rpmbuild -bb --without check ~/openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec
 
$ exit
 
# yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.3.0-1.x86_64.rpm
 
#  mkdir /etc/openvswitch
# setenforce 0
 
# systemctl start openvswitch.service
# systemctl  status openvswitch.service -l

三:在Server1和Server2上建立OVS Bridge并配置路由

Server1: docker容器内网ip网段172.17.1.0/24

# cat /proc/sys/net/ipv4/ip_forward 
1
# ovs-vsctl add-br obr0
# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.115.5
 
 # brctl addbr kbr0
 # brctl addif kbr0 obr0
 # ip link set dev docker0 down
 # ip link del dev docker0
 
# vi /etc/sysconfig/network-scripts/ifcfg-kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no
 
# cat /etc/sysconfig/network-scripts/route-ens32 
172.17.2.0/24 via 192.168.115.6 dev ens32
# systemctl  restart network.service

Server2: docker容器内网ip网段172.17.2.0/24

# cat /proc/sys/net/ipv4/ip_forward 
1
# ovs-vsctl add-br obr0
# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.115.6
 
 # brctl addbr kbr0
 # brctl addif kbr0 obr0
 # ip link set dev docker0 down
 # ip link del dev docker0
 
# vi /etc/sysconfig/network-scripts/ifcfg-kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.2.1
NETMASK=255.255.255.0
GATEWAY=172.17.2.0
USERCTL=no
TYPE=Bridge
IPV6INIT=no
 
# cat /etc/sysconfig/network-scripts/route-ens32 
172.17.1.0/24 via 192.168.115.5 dev ens32
 
# systemctl  restart network.service

四:启动容器测试

Server1和Server2上修改docker启动的虚拟网卡绑定为kbr0,重启docker进程

Server1:

# docker run -idt --name test1 registry.fjhb.cn/centos6 /bin/bash

Server2:

# docker run -idt --name test2 registry.fjhb.cn/centos6 /bin/bash

Server1:

时间: 2024-10-05 03:30:40

配置Docker多台宿主机间的容器互联的相关文章

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

Docker 默认的桥接网卡是 docker0.它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 veth* 而 Docker 只是把所有这些网卡桥接在一起,如下: [[email protected] ~]# brctl show bridge name bridge id STP enabled interfaces docker0 8000.56847afe9799 no veth0889 veth3c7b veth4061 在容器中看到的地址一般是像下面这样的地址

RedHat 7 KVM虚拟机在两台宿主机之间在线迁移

本文主要通过两台RedHat 7 KVM宿主机和NFS共享,将位于共享存储的虚拟机在两台宿主机之间进行在线迁移. 本文原始出处:江健龙的技术博客http://jiangjianlong.blog.51cto.com/3735273/1793913 环境介绍:  配置过程: 1.在rh7-02上配置NFS服务,共享/share目录出来 2.在两台宿主机的存储池都添加该NFS共享目录,下面以rh7-02添加存储池为例,点击左下角的+号添加一个存储池 3.输入存储池的名称为share,选择类型为net

Docker Toolbox在window 10 home 下挂载宿主机目录到容器的正确操作

由于我是window 10 home 而不是 pro版本,只能使用Docker Toolbox,其实docker for window对windows的支持更好,还有GUI,home版本安装Docker也是极为艰辛.好在我安装好了,但是日常使用也是比pro版的Docker有更多的坑,在此把我踩过的坑,记录下来,惠泽他人. 这个坑是Docker Toolbox在window 10 home 下挂载宿主机目录到容器,愿以为是要在Docker为win10 pro提供GUI里设置与c盘共享,Google

docker elasticsearch挂载宿主机报 java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes

① docker启动 es实例 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasti

宿主机与虚拟机局域网互联

参考:Ubuntu14.04如何设置固定IP和DNS 0. 本文前置条件为宿主机已经处于局域网内,开启虚拟机并使它加入局域网 1. 环境 宿主机操作系统:Windows 7 professional虚拟工具软件:VirtualBox-5.1.6-110634-Win虚拟操作系统:ubuntu-15.10-server-i386 2. 安装ubuntu操作系统 略 3. 宿主环境 4. 在VirtualBox Manager中设置虚拟机网络配置为-->桥接模式 5. 配置虚拟机静态ip sudo

docker容器互联并且暴露真实网络

在bridge模式下,连在同一网桥上的容器可以相互通信(若出于安全考虑,也可以禁止它们之间通信,方法是在DOCKER_OPTS变量中设置--icc=false,这样只有使用--link才能使两个容器通信). 多台物理主机之间的容器互联(暴露容器到真实网络中) docker  默认的桥接网卡是 docker0 .它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 vethxxx,而 docker 只是把所有这些网卡桥接在一起 pipework工作原理分析那么容器到底发生了哪些

docker技术剖析--docker网络(二)docker宿主机之间容器互通

http://hongge.blog.51cto.com/ 多台物理主机之间的容器互联(暴露容器到真实网络中) docker 默认的桥接网卡是 docker0 .它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 vethxxx,而 docker 只是把所有这些网卡桥接在一起,如下: 这样就可以把这个网络看成是一个私有的网络,通过 nat 连接外网,如果要让外网连接到容器中,就需要做端口映射,即 -p 参数. 如果在企业内部应用,或则做多个物理主机的集群,可能需要将多个物理

如何在虚拟机搭建ftp服务器供宿主机下载文件

本次教程是要实现ftp站点的搭建,首先需确保虚拟机可以和宿主机之间通讯,所以先要设置虚拟机的网络模式为"仅主机模式",如图: 然后我们需要在虚拟机中关闭Windows防火墙,点开"系统和安全",找到"Windows防火墙""打开或关闭Windows防火墙"关闭防火墙,如图: 关闭防火墙后配置虚拟机网络,打开网络适配器,修改虚拟机IP地址,如图: 至此虚拟机配置完毕,下面我们配置宿主机IP,这里以win10为例,如图: 两台机器

宿主机访问virtualBox中Ubuntu

斌斌 (给我写信) 原创博文(http://blog.csdn.net/binbinxyz),转载请注明出处! 使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,不需要你进行任何其他的配置,只需要宿主机器能访问互联网,虚拟机系统通过宿主机器所在的网络来访问公网. 使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑.想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信. 当前主机使用无线网卡自动获取IP上网,网络信息如下: 虚拟机中的Ubu