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自带三种网络类型:bridge
、host
和none
。启动的时候会默认分配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?