docker和ovs使用
docker使用
1.docker拉取镜像并使用
直接使用pull命令拉取镜像时,拉取默认是docker官网镜像,由于当前网络环境,建议使用国内镜像源,通常可以在拉取的镜像前加上镜像源官网域名,如下:
下载之后,使用images命令可以查看已有的镜像
使用run命令测试运行一个容器
重新启动容器并进入该容器:
2.为方便以后对ubuntu的使用,我们将他的源更改到网易或阿里的源,(建议用阿里的吧,网易的有时候崩。。。)如下:
先apt-get update一下,然后下载一个vim,等会会修改文件
可以发现apt-get update并不完全成功,先不管,下个vim再说,(下载vim时我用校园网比较慢,换热点快很多)然后进入/etc/apt目录准备换源
之后先把原来的源文件保存,sudo cp sources.list sources.list.bak
再修改源文件,vim sourses.list,将原先的源注释,换以下列出的源,再apt-get update就很快,再apt-get upgrade一下
deb http://mirrors.163.com/ubuntu/ zesty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ zesty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ zesty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ zesty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ zesty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
之后对ubuntu可能还需要配置一些环境,比如安装python3.6,安装gcc,可自行百度安装,比较简单给两个参考
python3.6安装
gcc,g++安装
3.将容器保存为镜像,由于我们会重复使用配置好的容器,因此,可以将容器保存为镜像供以后重复使用。如下:
docker commit -a "作者名" -m "对镜像描述" 提交容器 生成镜像名
可以发现,新的镜像已经出现在镜像列表中。
4.docker自定义网络
1.docker的网络通信基于安装时新建的docker0网桥,可以与外网,本虚拟机以及其他虚拟机通信
2.在两台虚拟机上创建自定义网络,并为新建容器分配自定义网络下的ip地址,两台虚拟机分配不同网段,配置操作如下:
虚拟机1-ip:192.168.255.129 容器网段 10.0.30.0/24 容器ip:10.0.30.10
虚拟机1操作如下:
创建自定义网络,ifconfig可发现多出一个网桥
在该网段下创建一个容器,并进入容器查看ip,为设置的ip
这个容器可ping通两台虚拟机和外网
虚拟机2-ip:192.168.255.128 容器网段 10.0.50.0/24 容器ip:10.0.50.10
虚拟机2操作跟虚拟机1相同,注意ip分配不同,输入命令时注意修改
这时我们让虚拟机1上的容器ping虚拟机2上的容器,发现ping不通
解决方式为为两台虚拟机配置路由,先退出容器,之后:
虚拟机1如下:(注意是对方的虚拟机ip和网段ip)
虚拟机2如下:(注意是对方的虚拟机ip和网段ip)
然后再进入容器互ping容器即可ping通。
删除路由命令:ip route del –
删除docker自定义网络:docker network rm –
docker使用方式还有很多,自行百度
ovs安装
添加依赖:
yum -y install openssl-devel wget kernel-devel selinux-policy-devel python-sphinx
yum groupinstall "Development Tools"
新添加一个用户,并进入,在其中下载ovs源码:
wget http://openvswitch.org/releases/openvswitch-2.9.0.tar.gz
解压缩源码,并创建编译目录
tar xfz openvswitch-2.9.0.tar.gz
mkdir -p ~/rpmbuild/SOURCES
从spec文件中删除openvswitch-kmod的依赖包,并创建一个新的spec文件:
sed 's/openvswitch-kmod, //g' openvswitch-2.9.0/rhel/openvswitch.spec > openvswitch-2.9.0/rhel/openvswitch_no_kmod.spec
开始编译,会出现如下错误,然后按如下方法解决:
rpmbuild -bb --without check ~/openvswitch-2.9.0/rhel/openvswitch_no_kmod.spec
cp openvswitch-2.9.0.tar.gz rpmbuild/SOURCES
退出当前用户使用root:exit
安装编译生成的rpm文件:
yum localinstall /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.9.0-1.x86_64.rpm
启动服务:systemctl start openvswitch.service
查看服务状态:systemctl -l status openvswitch.service
ovs-vsctl show命令验证
ovs+docker使用
编辑配置文件,打开centos网络包转发
vim /usr/lib/sysctl.d/50-default.conf
添加:net.ipv4.ip_forward=1
保存,重启网络服务:systemctl restart network
新建网桥,将物理网卡添加至网桥,启动网桥配置ip,设置路由
ovs-vsctl add-br br0
ovs-vsctl add-port br0 ens33
ip addr del 192.168.255.129/24 dev ens33
ip link set br0 up
ip addr add 192.168.255.129/24 dev br0
ip route add default via 192.168.255.2 dev br0
然后添加两个新端口做网关,并配置ip,之后可使用ovs-vsctl show查看
ovs-vsctl add-port br0 vlan10 -- set interface vlan10 type=internal
ip addr add 192.168.100.1/24 dev vlan10
ip link set vlan10 up
ovs-vsctl add-port br0 vlan20 -- set interface vlan20 type=internal
ip addr add 192.168.200.1/24 dev vlan20
ip link set vlan20 up
之后运行两个无网络docker容器
docker run -itd --name test1 --privileged --network=none newubuntu:1 /bin/bash
docker run -itd --name test2 --privileged --network=none newubuntu:1 /bin/bash
还需要下载一个工具:
wget http://github.com/openvswitch/ovs/raw/master/utilities/ovs-docker
chmod a+x ovs-docker
为容器分配ip:
./ovs-docker add-port br0 eth0 test1 --ipaddress=192.168.100.100/24 --gateway=192.168.100.1
./ovs-docker add-port br0 eth0 test2 --ipaddress=192.168.200.100/24 --gateway=192.168.200.1
进入其中一个容器,可查看ip,ping另一个容器可通:
恢复原来的网络,将br0删除即可,再重启网络服务
删除网桥:ovs-vsctl del-br br0
重启网络服务:service network restart
注:以上所有操作均在作者在网上搜集资料后,在个人电脑上实验成功,若读者实验时失败,可能由一些未知因素导致,可与作者联系。编写的教程可能由于疏忽出错,请与作者联系。