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,可自行百度安裝,比較簡單給兩個參考
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
注:以上所有操作均在作者在網上搜集資料後,在個人電腦上實驗成功,若讀者實驗時失敗,可能由一些未知因素導致,可與作者聯繫。編寫的教程可能由於疏忽出錯,請與作者聯繫。