docker+ovs使用

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

注:以上所有操作均在作者在網上搜集資料後,在個人電腦上實驗成功,若讀者實驗時失敗,可能由一些未知因素導致,可與作者聯繫。編寫的教程可能由於疏忽出錯,請與作者聯繫。

發佈了45 篇原創文章 · 獲贊 21 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章