node1:192.168.1.50 docker 127.17.1.1
node2:192.168.1.52 docker 127.17.2.1

1.1
关闭selinux
setenforce 0(立即生效)
vi /etc/selinux/config ,(重启生效)

#SELINUX=enforcing
SELINUX=disabled
1.2
关闭firewall
centos7默认开启了firewall,需关闭。
systemctl stop firewalld(立即生效)
systemctl disable firewalld(重启生效)


2
安装相关软件包
yum install docker
service docker start
chkconfig docker on
yum install net-tools
yum install bridge-utils

编译安装ovs
node01和node02 安装openvswitch

docker 环境变量注入。最新的为openvswitch-2.4.0.tar.gz,

3.1源码安装。

root用户执行:

yum -y install wget openssl-devel kernel-devel
yum groupinstall “Development Tools”
adduser ovswitch

ovswitch用户执行:

su – ovswitch
wget http://openvswitch.org/releases/openvswitch-2.4.0.tar.gz
tar -zxvpf openvswitch-2.4.0.tar.gz
mkdir -p ~/rpmbuild/SOURCES
sed ‘s/openvswitch-kmod, //g’ openvswitch-2.4.0/rhel/openvswitch.spec > openvswitch-2.4.0/rhel/openvswitch_no_kmod.spec
cp openvswitch-2.4.0.tar.gz rpmbuild/SOURCES/
rpmbuild -bb –without check ~/openvswitch-2.4.0/rhel/openvswitch_no_kmod.spec
exit

docker engine failed to start。root用户执行:

yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.4.0-1.x86_64.rpm
或者下载安装包
http://pan.baidu.com/s/1c0x7Wcw
rpm -ivh openvswitch-2.4.0-1.x86_64.rpm

3.3启动openvswitch
systemctl start openvswitch.service (立即生效)
chkconfig openvswitch on  (重启生效)
查看状态:
systemctl  status openvswitch.service -l

===========配置篇======
4.node01和node02 配置OVS Bridge及GRE

规划:

node01:容器内地址段172.17.1.0/24,新网桥:kbr0,GRE:gre0

docker环境变量,node02:容器内地址段172.17.2.0/24,新网桥:kbr0,GRE:gre0

4.1 node01:部署

开启ip转发: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.1.52   #node1上执行
ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.1.50   #node2上执行

service docker stop
brctl addbr kbr0
brctl addif kbr0 obr0
ip link set dev docker0 down
ip link del dev docker0

 

docker install、vi /etc/sysconfig/network-scripts/ifcfg-kbr0

ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1  #node1上配置
IPADDR=172.17.2.1  #node2上配置
NETMASK=255.255.255.0
GATEWAY=172.17.1.0 #node1上配置
GATEWAY=172.17.2.0 #node2上配置
USERCTL=no
TYPE=Bridge
IPV6INIT=no

 

vi /etc/sysconfig/network-scripts/route-ens192   #(ip -a 查看网卡)这里route-ens192是和 该目录下的ifcfg-ens192对应的

172.17.2.0/24 via 192.168.12.196 dev ens192   #这里ens192是 ip a命令看到的本地网卡不同的机器可能不一样

 

docker容器拒绝连接、修改docker配置文件,添加-b参数

vi /etc/sysconfig/docker

OPTIONS='--selinux-enabled -b=kbr0'   #docker1.9貌似不修改不起作用

 

reboot


docker容器无法访问?
说一下中间会遇到的坑
1.ip转发
Linux系统缺省并没有打开IP转发功能,要确认IP转发功能的状态,可以查看/proc文件系统,使用下面命令:
cat /proc/sys/net/ipv4/ip_forward
如果上述文件中的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
要想打开IP转发功能,可以直接修改上述文件:
echo 1 > /proc/sys/net/ipv4/ip_forward
把文件的内容由0修改为1。禁用IP转发则把1改为0。
上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修改下面一行的值:
net.ipv4.ip_forward = 1
修改后可以重启系统来使修改生效,也可以执行下面的命令来使修改生效:
sysctl -p /etc/sysctl.conf

进行了上面的配置后,IP转发功能就永久使能了

2.openvswitch无法打开提示 XX.db找不到
/usr/share/openvswitch/scripts/ovs-ctl start

3.docker网卡修改,针对centos7:vi /etc/sysconfig/docker
OPTIONS='--selinux-enabled -b=kbr0'