999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Docker技術(shù)在乘客信息系統(tǒng)部署中的應(yīng)用

2019-06-10 07:52:40汪曉臣趙偉慧黃志威
關(guān)鍵詞:環(huán)境

田 源,李 樊,汪曉臣,趙偉慧,黃志威

(1. 中國鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所, 北京 100081;2. 軌道交通系統(tǒng)測試國家工程實(shí)驗(yàn)室, 北京 100081)

乘客信息系統(tǒng)(PIS)采用中心-車站-車載的多層級架構(gòu),由控制中心統(tǒng)一管理各級設(shè)備[1]。目前的軟件部署采用單機(jī)拷貝安裝方式,面對數(shù)量龐大的設(shè)備集群,需要逐個設(shè)備安裝調(diào)試。部署過程中容易暴露出諸多弊端,如軟件運(yùn)行環(huán)境配置導(dǎo)致的未知錯誤;單機(jī)拷貝和配置的安裝方式耗費(fèi)人力;軟件版本升級或同步容易出錯;應(yīng)用與數(shù)據(jù)的耦合性較緊;硬件設(shè)備更換后,軟件需重新部署等。

目前,Docker技術(shù)在越來越多的場景中得到了應(yīng)用。張兆晨等人[2]設(shè)計(jì)了一種持續(xù)集成系統(tǒng),利用Docker的鏡像封裝和輕量級特性,取代了傳統(tǒng)持續(xù)集成系統(tǒng)的虛擬機(jī)架構(gòu),提升了開發(fā)效率,降低了系統(tǒng)占用資源;鄒保平等人[3]通過與傳統(tǒng)虛擬機(jī)比較的方式,驗(yàn)證了Docker容器化部署應(yīng)用的敏捷性;姚煒等人[4]在傳統(tǒng)開發(fā)平臺中引入Docker技術(shù),簡化了從開發(fā)到部署的繁雜配置,有效提升了項(xiàng)目的發(fā)布速度。綜上所述,基于Docker的容器化部署方案適用于開發(fā)與發(fā)布緊密結(jié)合、安裝配置繁雜的軟件部署場景。Docker技術(shù)的引入,將有效解決當(dāng)下乘客信息系統(tǒng)中軟件部署的諸多難點(diǎn)。

1 容器技術(shù)應(yīng)用分析

1.1 容器技術(shù)優(yōu)勢

在乘客信息系統(tǒng)中,傳統(tǒng)的應(yīng)用軟件部署方式是通過存儲介質(zhì)或網(wǎng)絡(luò)傳輸?shù)姆绞?,拷貝軟件安裝包至目標(biāo)機(jī)。然后在操作系統(tǒng)中配置軟件運(yùn)行所需的依賴環(huán)境,安裝軟件并進(jìn)行配置,執(zhí)行二進(jìn)制文件或腳本來運(yùn)行程序,提供軟件服務(wù)。乘客信息系統(tǒng)中,車站設(shè)備數(shù)量多達(dá)上百臺,分布距離較遠(yuǎn),逐個設(shè)備部署、安裝、調(diào)試的工作量非常巨大,后期對于軟件的部署架構(gòu)調(diào)整和版本維護(hù)都不友好。

容器是輕量級的操作系統(tǒng)級虛擬化。它可以實(shí)現(xiàn)在一個資源隔離的進(jìn)程中運(yùn)行應(yīng)用及其依賴項(xiàng)[5]。應(yīng)用程序與其所依賴的環(huán)境,可以被封裝成鏡像,并可以復(fù)用。應(yīng)用需要被部署到目標(biāo)機(jī)時,僅需在目標(biāo)機(jī)上獲取鏡像,將其實(shí)例化為容器進(jìn)程,運(yùn)行即可。當(dāng)軟件或依賴環(huán)境產(chǎn)生變化,只需更新鏡像即可。如此,將操作系統(tǒng)與應(yīng)用程序相關(guān)的環(huán)境獨(dú)立開,可降低部署難度,提升軟件的可維護(hù)性,保證線路軟件部署質(zhì)量的統(tǒng)一性。容器技術(shù)具有以下優(yōu)勢:

(1)敏捷環(huán)境:容器的啟動速度快,更新便捷。

(2)高效生產(chǎn):開發(fā)人員不用擔(dān)心生產(chǎn)環(huán)境下特殊的運(yùn)行環(huán)境,實(shí)現(xiàn)一處調(diào)試,處處運(yùn)行的高質(zhì)量軟件發(fā)布效果。

(3)版本控制:容器必須由鏡像生成,鏡像的版本唯一決定了運(yùn)行容器的一致性。

(4)輕便:鏡像文件占用空間小,且僅包含應(yīng)用程序和關(guān)鍵依賴,方便軟件歸檔和版本分發(fā)。

1.2 Docker技術(shù)特性

Linux 容器( LXC,Linux Container)是一個在單一 Linux 主機(jī)上提供多個隔離的Linux 環(huán)境的操作系統(tǒng)級虛擬技術(shù)[6]。Docker是一個基于LXC 的高級容器引擎[7]。Docker的沙箱機(jī)制有效的隔離各個用戶實(shí)例,多容器共享系統(tǒng)內(nèi)核的特性使得Docker實(shí)例輕量化,便于部署[8]。

Docker服務(wù)部署在宿主機(jī)操作系統(tǒng)之上。如圖1所示,Docker將應(yīng)用及其依賴環(huán)境封裝在容器中運(yùn)行。容器是操作系統(tǒng)為不同的用戶或進(jìn)程分配的具有一定相互獨(dú)立空間(包括內(nèi)存分頁空間、CPU時鐘分配、硬盤空間、進(jìn)程空間、運(yùn)行庫等、IP地址)。

2 系統(tǒng)部署架構(gòu)設(shè)計(jì)

本文在傳統(tǒng)乘客信息系統(tǒng)的架構(gòu)之上,引入Docker虛擬化技術(shù)。軟件供應(yīng)商將既有應(yīng)用軟件進(jìn)行鏡像封裝,依據(jù)Docker私有倉庫(Registry)規(guī)范,搭建一套應(yīng)用軟件管理系統(tǒng)。

圖 1 Docker技術(shù)架構(gòu)

該系統(tǒng)接入中心機(jī)房的核心交換機(jī),負(fù)責(zé)管理乘客信息系統(tǒng)全部的應(yīng)用鏡像,并向各層級設(shè)備群提供鏡像下載服務(wù),如圖2所示。

圖 2 基于Docker的乘客信息系統(tǒng)部署架構(gòu)

2.1 應(yīng)用軟件管理系統(tǒng)

應(yīng)用軟件管理系統(tǒng)由軟件倉庫管理工作站和軟件倉庫服務(wù)器組成。軟件供應(yīng)商提供初始的Docker鏡像。鏡像文件經(jīng)管理工作站,推送至軟件倉庫服務(wù)器。軟件倉庫服務(wù)器宜采用主備集群策略,保證倉庫鏡像存儲的高可靠性。結(jié)合Docker輕量、敏捷的技術(shù)特性,設(shè)備可在較短時間內(nèi)完成部署任務(wù),或從故障狀態(tài)中快速的恢復(fù)。同時,該架構(gòu)提供了云端應(yīng)用級的容災(zāi)方案。

2.2 服務(wù)器集群和設(shè)備群

控制中心服務(wù)器集群、車站子系統(tǒng)設(shè)備群和車載子系統(tǒng)設(shè)備群的各設(shè)備需預(yù)置Docker環(huán)境,通過pull或run方式下載或更新軟件鏡像,如圖3所示。

圖 3 軟件鏡像部署與運(yùn)行流程

虛線(1)所示是pull指令的數(shù)據(jù)傳遞流程。部署人員在操作系統(tǒng)中使用CLI指令向Docker守護(hù)進(jìn)程發(fā)送拉取鏡像A的指令,守護(hù)進(jìn)程從軟件倉庫服務(wù)器獲取對應(yīng)的鏡像A。

實(shí)線(2)所示是鏡像的實(shí)例化過程。運(yùn)行指令傳遞給Docker守護(hù)進(jìn)程后,守護(hù)進(jìn)程會將鏡像A在本地實(shí)例化為容器A-1,并返回一個用于訪問容器的虛擬會話。容器A-1在宿主機(jī)后臺運(yùn)行,通過端口映射向外部提供應(yīng)用服務(wù)。

通過上述流程,基于Docker的私有倉庫和應(yīng)用容器化技術(shù),系統(tǒng)實(shí)現(xiàn)了應(yīng)用軟件從云端備份到本地運(yùn)行的無縫結(jié)合。

3 架構(gòu)關(guān)鍵技術(shù)的實(shí)現(xiàn)

3.1 鏡像制作

鏡像是一個用于創(chuàng)建Docker容器的只讀模板。鏡像的制作方式有2種。

(1)容器提交(docker commit)

選擇合適的基礎(chǔ)鏡像,啟動一個可交換的容器。進(jìn)入其中,安裝需要的依賴環(huán)境和軟件包。然后,退出容器。使用docker commit指令,將容器中的全部修改提交,形成一份新的鏡像。

(2)鏡像構(gòu)建(docker build)

建立鏡像首先需要創(chuàng)建一個Dockerfile文件。根據(jù)語法,在Dockerfile文件中定義了創(chuàng)建和運(yùn)行鏡像的必要指令。Dockerfile中的每一條指令都會在鏡像中創(chuàng)建一個獨(dú)立層,當(dāng)Dockerfile內(nèi)容發(fā)生變更需要重新構(gòu)建時,只有變更的地方會被重建,因此,與其他虛擬化技術(shù)相比,Docker鏡像顯得更加輕量、小巧和快速。

上述兩種鏡像的生成方式優(yōu)缺點(diǎn)對比如表1所示。乘客信息系統(tǒng)的應(yīng)用軟件多為定制化較強(qiáng)的專用軟件,軟件依賴環(huán)境特殊,版本控制嚴(yán)格。在應(yīng)用軟件的鏡像制作中,針對不同軟件類型,應(yīng)制作不同的鏡像。

考慮到應(yīng)用軟件依賴環(huán)境的多元化,對于依賴環(huán)境定制程度不高的應(yīng)用軟件類型,可以通過Dockerfile構(gòu)建鏡像。Dockerfile模板可擴(kuò)展后服務(wù)于多個鏡像構(gòu)建,易于版本迭代和鏡像維護(hù)。

表 1 兩種Docker鏡像制作方式比較

對于依賴環(huán)境定制程度高的應(yīng)用軟件類型,宜在既有容器逐步調(diào)試依賴環(huán)境,生成穩(wěn)定可用的鏡像。當(dāng)軟件版本或依賴環(huán)境需要變更時,在前一鏡像版本的基礎(chǔ)上,進(jìn)入容器修改,通過鏡像迭代完成版本升級和軟件維護(hù)。

3.2 容器實(shí)例化

容器是鏡像的實(shí)例。通過Docker API或CLI(Command Line Interface),可以創(chuàng)建、啟動、停止、移動或刪除一個容器。默認(rèn)情況下,一個容器與其他容器、宿主機(jī)之間是相互隔離的。由于Docker引對卷掛載和端口映射的良好支持,容器可以通過外部存儲的掛載(-v參數(shù)),或映射網(wǎng)絡(luò)端口(-p參數(shù)),與宿主機(jī)或外部設(shè)備進(jìn)行通信。

3.2.1 端口映射

在乘客信息系統(tǒng)中,應(yīng)用軟件的實(shí)現(xiàn)都建立在網(wǎng)絡(luò)通信技術(shù)的基礎(chǔ)上。應(yīng)用軟件容器化后,如何將容器內(nèi)端口映射至宿主機(jī)是首要任務(wù)。

Docker容器運(yùn)行時,通過-p參數(shù),可以將容器內(nèi)的網(wǎng)絡(luò)端口映射至宿主機(jī)端口,實(shí)現(xiàn)網(wǎng)絡(luò)通信的功能。對于多網(wǎng)卡宿主機(jī),可以通過指定宿主機(jī)IP的方式,將容器內(nèi)端口映射至指定網(wǎng)卡的端口。下述指令實(shí)現(xiàn)了將nginx容器的80端口映射至宿主機(jī)配置IP為192.168.1.10網(wǎng)卡的8090端口。

docker run -p 192.168.1.10:8090:80 -d nginx:latest

3.2.2 數(shù)據(jù)持久化

Dokcer鏡像是一堆只讀層的集合。容器實(shí)例化過程,是在只讀鏡像層基礎(chǔ)上,建立一層可讀寫的容器層。以鏡像為模板,創(chuàng)建的容器層可以通過提交指令轉(zhuǎn)換為只讀層,形成新的鏡像。若不提交,在容器退出后,docker服務(wù)進(jìn)程會將容器層移除。

綜上所述,由鏡像創(chuàng)建出的容器,其運(yùn)行過程中的狀態(tài)不會持久保存。所以,在實(shí)現(xiàn)例如數(shù)據(jù)庫等應(yīng)用的容器化時,除了端口映射,還需要保證數(shù)據(jù)的持久化。通過-v參數(shù),將容器中的/var/lib/mysql文件夾映射至宿主機(jī)本地文件夾。

docker run -d -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql mysql:latest

3.2.3 圖像傳輸

乘客信息系統(tǒng)的終端設(shè)備需要提供媒體和信息服務(wù),媒體播放應(yīng)用程序需要圖形化界面顯示圖形和文字信息。Docker容器中應(yīng)用的圖形化顯示,可以利用X11服務(wù)實(shí)現(xiàn)。容器運(yùn)行命令中使用-v參數(shù),可以掛載容器的X11的unix套接字到宿主機(jī),同時通過-e參數(shù),更改宿主機(jī)的DISPLAY環(huán)境變量,控制圖形輸出至宿主機(jī)。

docker run -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix myGuiApp

在Docker容器與宿主機(jī)間,X11通信數(shù)據(jù)流如圖4所示。

圖 4 容器應(yīng)用圖像傳輸流程示意圖

3.3 應(yīng)用軟件管理系統(tǒng)搭建

應(yīng)用軟件管理系統(tǒng)由軟件倉庫服務(wù)器和軟件倉庫管理工作站組成。軟件倉庫是應(yīng)用軟件的Docker鏡像的集合,位于控制中心,向中心服務(wù)器、車站服務(wù)器和車站播控提供鏡像下載服務(wù)。為了實(shí)現(xiàn)倉庫存儲鏡像數(shù)據(jù)的持久化,需要將倉庫存儲掛載至宿主機(jī),即軟件倉庫服務(wù)器的本地目錄。

軟件倉庫的界面化管理平臺基于開源軟件實(shí)現(xiàn),平臺采用B/S架構(gòu)。運(yùn)維人員通過軟件倉庫管理工作站,可以實(shí)現(xiàn)鏡像上傳、鏡像更新、鏡像標(biāo)簽編輯,鏡像移除、鏡像備份等操作,避免了在工作站環(huán)境下安裝Docker環(huán)境和CLI訪問倉庫的繁雜步驟。

4 結(jié)束語

本文提出了一種基于容器技術(shù)的軟件部署方案。通過容器化設(shè)計(jì)降低了應(yīng)用程序與運(yùn)行環(huán)境的耦合性,簡化了系統(tǒng)安裝與部署流程,保證了軟件運(yùn)行的可靠性,有助于降低人力成本和維護(hù)難度。但是本文提出的軟件容器化部署方案,僅從操作系統(tǒng)層面實(shí)現(xiàn)了資源節(jié)約,未來可進(jìn)一步研究基于硬件資源平臺的虛擬化方案,對系統(tǒng)級的云平臺構(gòu)建提出設(shè)計(jì)方案。

猜你喜歡
環(huán)境
長期鍛煉創(chuàng)造體內(nèi)抑癌環(huán)境
一種用于自主學(xué)習(xí)的虛擬仿真環(huán)境
孕期遠(yuǎn)離容易致畸的環(huán)境
不能改變環(huán)境,那就改變心境
環(huán)境與保護(hù)
環(huán)境
孕期遠(yuǎn)離容易致畸的環(huán)境
高等院校環(huán)境類公選課的實(shí)踐和探討
掌握“三個三” 兜底環(huán)境信訪百分百
我國環(huán)境會計(jì)初探
中國商論(2016年33期)2016-03-01 01:59:38
主站蜘蛛池模板: 日本欧美精品| 精品国产美女福到在线直播| 一级高清毛片免费a级高清毛片| 国产99欧美精品久久精品久久| 久久青草精品一区二区三区| 免费激情网站| 福利国产在线| 一级毛片高清| 国产在线观看人成激情视频| 欧美日韩高清在线| 国产va欧美va在线观看| 亚洲大学生视频在线播放| 青青青国产视频手机| 制服无码网站| 国产一线在线| 国产高清国内精品福利| 亚洲一本大道在线| 无码中文字幕乱码免费2| 欧美日本激情| 亚洲综合在线最大成人| 久久不卡精品| 色网站在线免费观看| 亚洲色婷婷一区二区| 91无码人妻精品一区| 麻豆精品在线| 日本道综合一本久久久88| 成人免费黄色小视频| 九色综合伊人久久富二代| 亚洲av综合网| 久久久久久高潮白浆| 久久久久人妻一区精品色奶水| 大陆国产精品视频| 99re视频在线| 国产污视频在线观看| 99久久精品无码专区免费| 亚洲91在线精品| 亚洲大尺度在线| 国内黄色精品| 91在线无码精品秘九色APP| 亚洲精品另类| 99精品在线视频观看| 美女毛片在线| 国产精品亚洲天堂| AV熟女乱| 亚洲精品国产成人7777| 日本亚洲欧美在线| 国产对白刺激真实精品91| 亚洲中字无码AV电影在线观看| 日韩经典精品无码一区二区| 国产亚洲精品自在线| 麻豆精品在线播放| 91成人在线观看| 亚洲永久精品ww47国产| 国产日韩久久久久无码精品| 99国产精品国产高清一区二区| 91av国产在线| 四虎影院国产| 欧美五月婷婷| 18禁黄无遮挡网站| 91久久大香线蕉| 国产精品无码一二三视频| 欧美亚洲国产精品第一页| 91精品视频在线播放| 人人看人人鲁狠狠高清| 免费观看成人久久网免费观看| 亚洲久悠悠色悠在线播放| 自拍偷拍一区| 国产日本视频91| 国产综合色在线视频播放线视 | 国产精品视频免费网站| 国产精品林美惠子在线观看| 日韩精品一区二区深田咏美| 中文字幕 欧美日韩| 久久久噜噜噜| 久久精品中文字幕免费| 国产精品第页| 亚洲日本中文字幕乱码中文| 99精品免费在线| 国产欧美日韩18| 精品人妻无码区在线视频| 欧美不卡视频在线| 国产精品天干天干在线观看|