張世超
摘要:針對爆炸式增長的應(yīng)用系統(tǒng)數(shù)量與不斷攀升的運維經(jīng)費間的矛盾,基于Docker技術(shù)遷移應(yīng)用系統(tǒng)至容器,實現(xiàn)網(wǎng)絡(luò)隔離,搭建多應(yīng)用集成,并與Vmware虛擬機進(jìn)行對比分析。
關(guān)鍵詞:Docker;Vmware;容器
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2020)02-0101-02
在以往的年代,每臺服務(wù)器運行單個應(yīng)用系統(tǒng),現(xiàn)在如果依然采用這種模式,服務(wù)器數(shù)量將呈爆炸式增長,運維成本不可想象,日常工作中通常購買比實際需求更好的服務(wù)器來滿足性能和日后升級需要,最終導(dǎo)致很多服務(wù)器計算資源大部分時間處于空閑狀態(tài),這是一種極大的浪費,為了解決上述問題,陸續(xù)誕生了VMware虛擬機和Docker容器。
1 Docker與VMware
VMware虛擬機在硬件層面上實現(xiàn)虛擬化,Docker容器是在操作系統(tǒng)層面上實現(xiàn)的虛擬化。Docker共享宿主機硬件資源和操作系統(tǒng),無論運行多少容器都共享一個操作系統(tǒng),VMware虛擬機依賴操作系統(tǒng),有多少個虛擬機就需要運行多少操作系統(tǒng)。容器節(jié)省大量系統(tǒng)資源,如CPU內(nèi)存和存儲,同時還能節(jié)省操作系統(tǒng)許可證開銷,以及為操作系統(tǒng)打補丁等運維成本[1]。
2 Docker容器多應(yīng)用集成實現(xiàn)
這里用市面上使用率最高,最具代表性的的LAMP(Linux+ Apache+PHP+Mysql)舉例說明實現(xiàn)步驟,使用其他語言或者數(shù)據(jù)庫需選擇其他對應(yīng)鏡像構(gòu)建容器,具體用法及設(shè)置略有不同。
2.1 安裝Docker
系統(tǒng)選用Centos8(由于客觀條件限制,是在Win10系統(tǒng)上用VMware架設(shè)的)。
按照官方手冊安裝依賴包。
yum install-y yum-utils device-mapper-persistent-data lVmware2
更新源(也可以自己修改國內(nèi)鏡像源)。
yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安裝并啟動Docker-CE。
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
如果出現(xiàn)podman-manpages-1.4.2-5.module_el8.1.0+ 237+63e26edc.noarch錯誤則需要先yum remove刪除后再安裝Docker-CE,如果出現(xiàn)containerd.io版本過低,先升級containerd.io,或安裝時加入—nobest參數(shù)。
2.2 構(gòu)建容器
創(chuàng)建多個網(wǎng)絡(luò),每個應(yīng)用使用單獨網(wǎng)絡(luò)與其他應(yīng)用系統(tǒng)隔離。
docker network create -d bridge app1
docker network create -d bridge app2
……
使用鏡像運行多個應(yīng)用容器和數(shù)據(jù)庫容器,映射容器端口到宿主機,例如把容器80端口映射到宿主機10001端口,分配各個專用網(wǎng)絡(luò)及掛載持久化資源。
docker run --name app1 -p 10001:80 -v /var/docker/app1:/var/www/html --network app1 -d php:7-apache
docker run --name db1 -p 20001:3306 -v /var/docker/db1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= 123456 --network app1 -d mysql:5.7
進(jìn)入PHP容器安裝連接Mysql必需組件,這里安裝需要連接數(shù)據(jù)庫的mysqli和pdo_mysql。
docker exec -it app1 bash
cd /usr/local/bin
./docker-php-ext-install mysqli pdo_mysql
退出容器回到宿主機,重啟容器。
exit
docker restart app1
其余幾個系統(tǒng)也參照上述步驟構(gòu)建容器,如果遇到容器無法互訪請配置防火墻或者關(guān)閉防火墻。
systemctl stop firewalld.service
這里舉例構(gòu)建應(yīng)用和數(shù)據(jù)庫容器各5個,一共10個容器模擬日常運行的5個應(yīng)用系統(tǒng)。
2.3 配置系統(tǒng)
運行容器時使用-v參數(shù)掛載持久化數(shù)據(jù),把系統(tǒng)文件放置在宿主機/var/docker/xx目錄下,如容器app1使用的應(yīng)用文件放置在app1文件夾下,對應(yīng)的數(shù)據(jù)庫db1使用文件放置db1下,其他配置文件和日志文件也可使用多個-v參數(shù)掛載在相應(yīng)位置。完成各個系統(tǒng)配置后通過宿主機上映射的端口訪問系統(tǒng),如訪問app1就輸入宿主機IP地址:10001/應(yīng)用目錄,數(shù)據(jù)庫地址為宿主機IP地址:20001。
3 性能對比
用VMware架設(shè)5臺Centos服務(wù)器,分別安裝與Docker容器里一樣的應(yīng)用及數(shù)據(jù)庫,通過容量、資源利用率、多并發(fā)數(shù)測試和系統(tǒng)啟動時間分析優(yōu)缺點。
3.1 鏡像容量
如表1所示,對比測試實驗VMware鏡像大約比Docker鏡像多占5倍空間。
3.2 資源利用率
VMware虛擬機5臺,每臺分配內(nèi)存2G,平均使用率70%,每臺分配CPU2個核心,空閑時使用率1%,比Docker容器消耗了更多內(nèi)存在運行VMware操作系統(tǒng)。Docker宿主機分配內(nèi)存10G,內(nèi)存平均使用率60%,CPU使用率0%。VMware主機內(nèi)存16G,內(nèi)存平均使用率87%,CPU使用率3%,由此可見Docker資源利用率更佳,本次測驗VMware部署5個應(yīng)用已經(jīng)接近極限,而Docker運行20個容器模擬10個應(yīng)用依然比VMware消耗更少內(nèi)存,如圖1所示。
3.3 多并發(fā)測試
使用ApacheBench的ab -c 5000 -n 50000命令對VMware和Docker的同個系統(tǒng)進(jìn)行并發(fā)數(shù)5000總數(shù)50000并發(fā)測試,Docker容器80%響應(yīng)時間小于57ms,但是有10%響應(yīng)時間大于3s,VMware虛擬機50%請求響應(yīng)時間230ms,其余至少響應(yīng)超過1秒,可見高并發(fā)高訪問的情況下,Docker比VMware性能更勝一籌,如表2所示。
3.4 系統(tǒng)啟動時間
Docker容器啟動時間大約2秒,VMware虛擬機因為需要啟動整個Centos系統(tǒng),啟動時間大約1分30秒,在遇到問題重啟系統(tǒng)或者日常維護(hù)時,Docker可以更快上線。
4 結(jié)語
本次多應(yīng)用集成搭建中使用Docker容器技術(shù)遷移多個應(yīng)用系統(tǒng)至一臺服務(wù)器,遷移過程快捷方便,僅需要一些命令就可以完成環(huán)境部署,比以往單服務(wù)器單應(yīng)用模式節(jié)省大量時間及數(shù)臺服務(wù)器購買資金,如果應(yīng)用操作系統(tǒng)是windows,還能節(jié)省windows許可證費用,日常維護(hù)和操作系統(tǒng)補丁升級工作量也大大減少,甚至跟VMware相比也毫不遜色。
通過使用Docker容器合理利用資源,實現(xiàn)了單臺服務(wù)器運行多應(yīng)用系統(tǒng)的目標(biāo)。以本單位現(xiàn)有情況,安全穩(wěn)定性要求較高的核心應(yīng)用大約占40%,其余是要求較低的非核心應(yīng)用,如保持核心應(yīng)用不變,把非核心應(yīng)用全部遷移至Docker容器,可以減少一半服務(wù)器數(shù)量,節(jié)約大筆經(jīng)費,降低運維人員工作量。
參考文獻(xiàn)
[1] Nigel Poulton.深入淺出Docker[M].北京:人民郵電出版社,2019.
Construction of? Multiple Application Integration Based on Docker Container
ZHANG Shi-chao
(National Radio and Television Administration 731 Station, Longyan? Fujian? 364000)
Abstract:In view of the contradiction between the exploding number of application systems and the rising maintenance cost, migrate applications to containers based on Docker technology, achieve network isolation, build multi-application integration, compare and analysis with VMware virtual machine.
Key words:Docker;VMware;container