OVS+Docker网络构建

环境

  • CentOS 7

  • Docker

  • OpenvSwitch

CentOS 7下安装OVS

不像deb下,OVS在CentOS上需要手动编译、创建rpm安装包。

1. 安装一些中间需要的包

sudo yum install -y wget openssl-devel gcc make python-devel openssl-devel kernel-devel graphviz kernel-debug-devel autoconf automake rpm-build redhat-rpm-config libtool python-twisted-core python-zope-interface PyQt4 desktop-file-utils libcap-ng-devel groff checkpolicy selinux-policy-devel 
# 上面的是参考教程中给出的,但是编译时还是缺少下面的这些依赖,可能是因为选择的OVS版本不同
sudo yum install -y gcc-c++ python-sphinx unbound unbound-devel

2. 下载OVS源码,准备进行编译。

各个版本的下载链接可以在官网找到。

mkdir -p ~/rpmbuild/SOURCES
cd ~/rpmbuild/SOURCES
wget https://www.openvswitch.org/releases/openvswitch-2.11.1.tar.gz
tar xfz openvswitch-2.11.1.tar.gz

3. 构建RPM包

rpmbuild -bb --nocheck openvswitch-2.11.1/rhel/openvswitch-fedora.spec

4. 使用yum安装本地包

sudo yum localinstall -y ~/rpmbuild/RPMS/x86_64/openvswitch-2.11.1-1.el7.x86_64.rpm

5. 启动OVS的服务

sudo systemctl start openvswitch.service
sudo systemctl is-active openvswitch
ovs-vsctl -V

将Docker容器连接到OVS

OpenvSwitch的网桥还不能直接支持Docker容器的挂载,需要手动在网桥上创建虚拟网口,并挂载到容器。

1. 创建none网络的Docker容器

Docker自带三种网络类型:bridgehostnone。启动的时候会默认分配bridge,提供网络端口。

同时新版本的Docker不允许容器内更改网络配置,除非加上privileged = true参数。

sudo docker run --net=none --privileged=true -it ubuntu:14.04 bash

不要使用后续的ubuntu版本,其中不再自带net-tools

2. 手动添加网络

OVS为Docker提供了支持,通过ovs-docker工具进行网络的配置。

获取ovs-docker

:Docker 使用 OpenvSwitch 网桥 - CSDN :Installation Openvswitch LTS in CentOS 7 - GitHub Gist :Docker容器受控于SDN网络 - 博客园

Last updated

Was this helpful?