• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Docker的運(yùn)維平臺設(shè)計(jì)

      2018-04-14 02:05:51張延冬邢艷芳
      計(jì)算機(jī)時代 2018年4期
      關(guān)鍵詞:鏡像文件鏡像命令

      張延冬,邢艷芳

      (1.南京南瑞繼保電氣有限公司,江蘇 南京 211102;2.中國傳媒大學(xué)南廣學(xué)院)

      0 引言

      由于軟件開發(fā)人員與軟件測試或運(yùn)維人員的環(huán)境信息不對稱,傳統(tǒng)的軟件交付方式存在很多問題。如軟件發(fā)布分散,使用者安裝軟件時需要解決軟件的依賴關(guān)系。這些問題不但降低了軟件交付效率,而且難以實(shí)現(xiàn)持續(xù)交付和集成。

      作為開源的應(yīng)用容器引擎,Docker很好地解決了上述問題。本文研究了基于Docker的輕量級虛擬化方案,以及類似于版本管理的映像管理模式。

      1 方案設(shè)計(jì)

      1.1 工作模塊

      Docker的運(yùn)行主要依賴以下幾個模塊:①Linux操作系統(tǒng),Docker依賴于像Linux容器(LXC)這樣的Linux技術(shù),以及Cgroups和命名空間功能,這些在Windows操作系統(tǒng)尚不存在,所以Linux的操作系統(tǒng)是Docker必不可少的基礎(chǔ)。②虛擬機(jī),由于普遍采用Windows操作系統(tǒng),所以需要虛擬機(jī)安裝Linux操作系統(tǒng)。③VMware虛擬機(jī)軟件,創(chuàng)建虛擬機(jī)并完成配置,以滿足Docker正常使用。配置好基本的硬件信息之后,在虛擬機(jī)上安裝Linux系統(tǒng),采用centOS6.8的操作系統(tǒng),下載并安裝Docker[1]。

      1.2 Docker

      Docker是軟件工業(yè)的集裝箱技術(shù),它提供了一個可供應(yīng)用程序運(yùn)行的獨(dú)立空間或者說容器。Docker最初采用Go語言編寫,相當(dāng)于是加在Linux容器上的管道,允許開發(fā)者在更高層次的概念上工作。Docker擴(kuò)展了Linux容器,通過一個高層次的API為進(jìn)程單獨(dú)提供輕量級的虛擬環(huán)境。與傳統(tǒng)虛擬機(jī)不同的是,一個Docker容器并不包含一個單獨(dú)的操作系統(tǒng),而是基于已有基礎(chǔ)設(shè)施中操作系統(tǒng)所提所供的功能來運(yùn)行[2]。

      Docker基于C/S架構(gòu),由客戶端和服務(wù)端組成,主要包含以下組件:①Docker Client,Docker的客戶端。②Docker Server,是Docker daemon的主要組成部分,用于接收用戶通過Docker Client發(fā)來的請求,并按照相應(yīng)的路由規(guī)則實(shí)現(xiàn)路由分發(fā)。③Docker Registry,是Docker鏡像的中央存儲倉庫,用于儲存上傳的私有和公有Docker容器的鏡像備份。Docker的三個基本要素分別是:①Docker容器,負(fù)責(zé)應(yīng)用程序的運(yùn)行,程序可以是操作系統(tǒng),或者用戶添加的文件和元數(shù)據(jù)。②Docker鏡像,是一個只讀文件,用來運(yùn)行創(chuàng)建的Docker容器。③Dockerfile文件指令集,用來創(chuàng)建Docker鏡像,其命令用來構(gòu)建容器的每一層[3]。

      1.3 部署流程

      ⑴ 自定義指令集,依據(jù)基礎(chǔ)鏡像,結(jié)合實(shí)際的需要,在Dockerfile指令集中增添命令,創(chuàng)建符合實(shí)際需求的Docker鏡像。

      ⑵ 創(chuàng)建鏡像,可以通過Dockerfile文件創(chuàng)建,也可以通過倉庫拉取,還可以通過壓縮文件解壓生成鏡像,或者通過容器的反向Commit生成鏡像。

      ⑶ 生成容器,所有的鏡像文件都是為了生成Docker容器,容器是Docker的核心部分,在容器中部署、運(yùn)維、測試。

      ⑷ 上傳和下載鏡像,通過Docker官方提供的開源平臺Registry倉庫,方便鏡像的使用和傳播[4]。

      2 環(huán)境配置

      2.1 虛擬機(jī)配置

      虛擬機(jī)采用VMware12,可以虛擬所有的操作系統(tǒng),而且操作簡單。首先安裝VMware12,創(chuàng)建典型虛擬機(jī)。隨后用鏡像的centOS系統(tǒng)文件進(jìn)行安裝,選擇好鏡像文件后,對虛擬機(jī)的硬件進(jìn)行配置,分配內(nèi)存和硬盤空間,網(wǎng)絡(luò)適配器和光驅(qū)/聲卡等其他配置。虛擬機(jī)中安裝centOS系統(tǒng),在操作系統(tǒng)命令行終端,使用Linux命令對系統(tǒng)進(jìn)行操作。

      2.2 Docker安裝配置

      在Linux操作系統(tǒng)下安裝Docker。首先打開命令終端檢查本地是否有Linux中的curl命令,如果沒有,輸入sudo yum install curl從yum庫中安裝curl命令。安裝好curl命令后,輸入curl-fsSL http://get.docker.com|sh進(jìn)入Docker官網(wǎng)獲取最新的Docker安裝包進(jìn)行安裝,具體操作參見圖1。

      圖1 安裝Docker

      使用命令Docker version檢查Docker的版本,正常情況下同時顯示client版本和server版本。只顯示client版本,表示Docker運(yùn)行時沒有超級用戶權(quán)限,命令不能執(zhí)行。使用命令Docker info檢查Docker基本信息,能正確顯示表示Docker已經(jīng)安裝完成。

      3 系統(tǒng)實(shí)現(xiàn)

      在Linux中使用Vim創(chuàng)建Docker鏡像,編寫Python程序,完成下載和上傳等操作。使用Python語言編寫一段程序放到創(chuàng)建的容器中,測試程序在容器中的運(yùn)行情況和程序的輸出情況[5]。

      3.1 創(chuàng)建鏡像

      創(chuàng)建Docker鏡像有很多種辦法,可以在官方網(wǎng)站上使用pull命令下載,也可以用Linux中的Vim命令編寫Dockerfile本地文件系統(tǒng)創(chuàng)建Docker鏡像。分別用兩種方法創(chuàng)建兩個Docker鏡像。

      ⑴ 在官方網(wǎng)站上使用pull命令下載

      在Docker Registry和云平臺上存放的鏡像,都是按照用戶名/鏡像名的方式來存儲的。但有一類鏡像比較特殊,比如centos、ubuntu這類基礎(chǔ)鏡像,經(jīng)過官方驗(yàn)證,安全可靠,可以直接通過鏡像名來檢索到。輸入命令:$docker pull busybox,通過Docker命令下載busybox鏡像。執(zhí)行pull命令的時候要輸入完整的鏡像名稱。

      ⑵ 使用DockerFile文件創(chuàng)建鏡像

      首先創(chuàng)建一個Dockerfile,包含一些創(chuàng)建鏡像的指令。新建一個目錄和一個Dockerfile。

      在Dockerfile中每一條指令都創(chuàng)建鏡像的一個層。Dockerfile使用#來注釋,F(xiàn)ROM命令說明使用哪個鏡像作為基礎(chǔ)(即父鏡像),已RUN開頭的指令會在創(chuàng)建過程中運(yùn)行。Dockerfile文件可以通過網(wǎng)上下載或自己編寫,使用git命令從網(wǎng)站clone下載Dockerfile,使用Docker build命令來生成鏡像,如圖2所示。

      圖2 創(chuàng)建鏡像

      3.2 運(yùn)行容器

      Docker容器可以理解為將一個進(jìn)程在一個安全封閉的環(huán)境中運(yùn)行。這個環(huán)境包含了該進(jìn)程運(yùn)行所必須的資源,包括文件系統(tǒng)、系統(tǒng)類庫、shell腳本等等。這個環(huán)境默認(rèn)不運(yùn)行任何程序,需要在環(huán)境中運(yùn)行一個進(jìn)程來啟動這一個容器。這個進(jìn)程是該容器的惟一進(jìn)程,所以當(dāng)該進(jìn)程結(jié)束的時候,容器也會完全停止。

      創(chuàng)建容器首先要有鏡像文件,通過Docker鏡像文件使用Docker run命令,將鏡像文件運(yùn)行成為Docker容器。啟動容器,在容器中運(yùn)行相應(yīng)的程序以達(dá)到快速部署,應(yīng)用隔離。將之前通過兩種方法構(gòu)建的boyan_py和busybox兩個鏡像文件運(yùn)行成容器。

      容器運(yùn)行后,在Python中運(yùn)行寫好的程序,進(jìn)行測試,檢測程序的可行性和容器是否已部署完成。

      3.3 開源共享

      當(dāng)修改了某一個容器之后,通過執(zhí)行Docker中的commit命令,可以保存對容器的修改。Docker中保存狀態(tài)的過程稱之為committing,為了與舊版本區(qū)別,會產(chǎn)生新的版本號。使用docker ps-l命令獲得容器的id,輸入命令:$docker commit 83ae boyan/centos:7.1,把這個鏡像保存為boyan/centos:7.1。無需拷貝完整的id,通常起始的三至四個字母即可區(qū)分,如圖3所示。

      圖3 容器封裝成鏡像

      通過docker push命令可以將某一個鏡像發(fā)布到官方的索引網(wǎng)站,分享到這樣的開源平臺,一方面可以重用,另一方面也可以分享使用,提高使用效率,避免重復(fù)勞動。docker images命令可以列出所有安裝過的鏡像。

      4 調(diào)試與運(yùn)行

      4.1 獲取共享的鏡像

      在已經(jīng)安裝好的VMware上虛擬第二臺計(jì)算機(jī),配置和第一臺相同。同樣在創(chuàng)建好的虛擬機(jī)中安裝Linux系統(tǒng),登錄之后安裝Docker,配置與之前相同。新建好Docker之后,從registry中pull之前上傳的鏡像文件,pull回本地的鏡像文件名與上傳時一致。

      4.2 檢測鏡像的可行性

      使用docker run命令運(yùn)行鏡像文件,使其生成docker容器,在容器中檢驗(yàn)編寫的python程序,測試容器的性能。執(zhí)行完docker run命令后,生成73f5a93600f8這個容器,在容器中運(yùn)行python檢測程序是否可以執(zhí)行,如圖4所示。

      圖4 在容器驗(yàn)證Python程序運(yùn)行

      5 結(jié)束語

      Python程序成功運(yùn)行,表明了運(yùn)維系統(tǒng)的可行性。本文通過創(chuàng)建鏡像、運(yùn)行容器和鏡像共享,驗(yàn)證了Docker容器的快速部署和輕量級的特點(diǎn),展現(xiàn)了Docker類似集裝箱的技術(shù)在運(yùn)維平臺搭建中的廣泛應(yīng)用前景[6-7]。

      伴隨互聯(lián)網(wǎng)時代的發(fā)展,程序開發(fā)和運(yùn)維項(xiàng)目日益增多,快捷方便地搭建環(huán)境必將成為趨勢。Docker降低了開發(fā)人員的繁瑣勞動,簡化了與測試運(yùn)維人員的配合,方便在持續(xù)的集成環(huán)境中進(jìn)行部署和驗(yàn)證工作。未來還需考慮Docker在Windows系統(tǒng)中的應(yīng)用,以及共享的安全性,私有庫的身份驗(yàn)證,安全機(jī)制等方面。

      參考文獻(xiàn)(References):

      [1]陳康,黃炳良.基于openstack云平臺的docker應(yīng)用[J].軟件,2014.11:73-76

      [2]張怡.基于Docker的虛擬化應(yīng)用平臺設(shè)計(jì)與實(shí)現(xiàn)[D].華南理工大學(xué)碩士學(xué)位論文,2016.

      [3]王飛.基于Docker的研發(fā)部署管理平臺的設(shè)計(jì)與實(shí)現(xiàn)[D].北京交通大學(xué)碩士學(xué)位論文,2015.

      [4]劉琳羽,南凱.一種基于Docker的開發(fā)者服務(wù)平臺設(shè)計(jì)[J].科研信息化技術(shù)與應(yīng)用,2015.5:65-72

      [5]胡湘菲.軟件自動化測試環(huán)境搭建中的Docker應(yīng)用[J].計(jì)算機(jī)時代,2017.3:26-29

      [6]逸凡.從Docker的流行談云計(jì)算的走向[N].網(wǎng)絡(luò)世界,2015-03-09(014).

      [7]E.Mazzoni,S.Arezzini,T.Boccali,A.Ciampa,S.Coscetti,D.Bonacorsi.Docker experience at INFN-Pisa Grid Data Center[J].Journal of Physics:Conference Series,2015.664(2).

      猜你喜歡
      鏡像文件鏡像命令
      只聽主人的命令
      鏡像
      鏡像
      小康(2018年23期)2018-08-23 06:18:52
      沒光驅(qū)不要緊 裝個免費(fèi)虛擬的
      移防命令下達(dá)后
      用RamOS降低公用機(jī)的維護(hù)工作量
      這是人民的命令
      Win7升級Win10教程
      電腦迷(2015年9期)2015-05-30 22:08:35
      鏡像
      小康(2015年4期)2015-03-31 14:57:40
      鏡像
      小康(2015年6期)2015-03-26 14:44:27
      涿州市| 安新县| 体育| 长乐市| 武胜县| 肥城市| 平南县| SHOW| 柳河县| 榆社县| 界首市| 虞城县| 平凉市| 应用必备| 阿拉尔市| 遂宁市| 昭苏县| 灵宝市| 增城市| 元朗区| 通江县| 衡阳市| 长葛市| 克山县| 焉耆| 饶阳县| 临夏市| 海丰县| 仙居县| 来凤县| 庆元县| 江口县| 汝阳县| 闵行区| 平遥县| 富顺县| 昌乐县| 普陀区| 蒙山县| 齐齐哈尔市| 昌江|