段嘉騰
摘 要:在互聯(lián)網(wǎng)發(fā)展的過程中,云計算得到了飛速的發(fā)展,并在開放協(xié)作、移動商務、搜索服務中得到了應用。Docker是一種輕量級的虛擬化方式,在軟件開發(fā)中應用Docker技術能夠使PaaS平臺的部署和運行更加高效。本文對Docker技術進行了簡要的介紹,并探討了Docker技術在軟件開發(fā)過程中的具體應用,供相關人員參考借鑒。
關鍵詞:Docker技術;軟件開發(fā);應用
中圖分類號: F224-39 文獻標識碼: A 文章編號: 1673-1069(2016)26-152-2
0 引言
通過云計算,用戶能夠對應用程序進行高效的部署和開發(fā),然后使用基于PaaS的云基礎設施來托管應用程序,這樣可以使運行和維護成本得到降低,開發(fā)周期還能夠得到進一步的縮短。作為一種輕量級的PaaS,虛擬化是Docker技術的核心技術。
1 Docker技術
當前具有兩種虛擬化類型,也就是以軟件為基礎的虛擬化和以硬件為基礎的虛擬化。以軟件為基礎的虛擬化又可以分為兩個類別:平臺虛擬化和應用虛擬化,應用虛擬化包括操作系統(tǒng)及虛擬化、超虛擬化、部分虛擬化、硬件輔助虛擬化、完全虛擬化。本文探討的虛擬機技術是平臺虛擬化的一種,而Docker技術是一種操作系統(tǒng)的虛擬化。
1.1 Docker技術的含義
2013年Docker正式發(fā)布,屬于一種PaaS項目。Docker屬于高級容器引擎,以go語言為基礎,由PaaS提供商提供,須遵從Apache2.0協(xié)議,當前已經(jīng)形成了Docker生態(tài)圈。當前對Docker進行集成支持的有阿里巴巴、百度、IBM、google、Redhat等。Docker技術希望能夠對應用組件進行生命周期管理,包括運行、部署、分發(fā)、封裝等,從而實現(xiàn)一次封裝、隨處運行,常見的應用組件主要有編譯器、操作系統(tǒng)、數(shù)據(jù)庫服務、Web應用等。
1.2 Docker技術的關鍵要素
Docker技術包括以下幾個關鍵要素:Registry(倉庫)、Container(容器)、Image(鏡像),其中最重要的要素是鏡像。鏡像中具有文件系統(tǒng),要構建容器就必須以鏡像為基礎。鏡像是一種只讀模板,能夠將一個完整的操作系統(tǒng)和其應用軟件包含其中。用戶能夠對他人創(chuàng)建的鏡像進行下載,也可以以自己的需求為依據(jù)自行創(chuàng)作鏡像。鏡像中的創(chuàng)建實例就是容器,也就是處于啟動或執(zhí)行階段的是容器,構建或打包階段的是鏡像。用戶創(chuàng)建的鏡像可以放在倉庫中進行保存。
當前主要有兩種鏡像來源:
第一種是Docker自有鏡像,也就是公用鏡像;
第二種是用戶定制鏡像,也就是私有鏡像。
1.3 Docker虛擬化技術的技術優(yōu)勢
當前的Docker虛擬化技術主要有以下幾個技術優(yōu)勢:
①迭代策略更加快捷、簡單,運用Dockersfile能夠更加快捷地在生產(chǎn)環(huán)境中反饋開發(fā)環(huán)境中的配置更新,使自動化管理更加高效。
②使物理資源的利用率得到提高。Docker容器只需占據(jù)非常小的存儲空間,而且只需刪除容器就可以將其他的相關文件一并刪除,從而使物理資源的利用率得到了有效的提高。
③使部署周期和環(huán)境交付周期縮短,開發(fā)人員可以運用Docker技術來進行鏡像部署,進行軟件開發(fā)。在完成開發(fā)之后可以直接向運維和測試人員進行平滑移交。而且可以非常便利地對容器進行維護,從而使部署、測試和開發(fā)的時間得到縮短,實現(xiàn)快速迭代的目的。
④提高工作效率,對服務器遷移造成的環(huán)境再部署進行簡化,并且使部署風險系數(shù)得到控制。
1.4 Docker的體系架構
遠程控制器是Docker的客戶端,DockerHost會收到通過TCP/REST傳送來的請求,常見的請求包括刪除容器、保存容器、運行容器、創(chuàng)建容器等。Daemon處于Docker的服務端,可以根據(jù)客戶端的請求對其進行管理。然后運用driver把請求轉發(fā)到位于容器中的libcontainer執(zhí)行環(huán)境。與各種Linux內(nèi)核隔離的接口主要由libcontainer提供,與控制組和類似。在這種架構中,多個容器能夠對一個Linux內(nèi)核進行共享,而這些容器的運行又相互隔離。要實現(xiàn)Docker的輕量級要求,就不能在Docker容器中配置專用操作系統(tǒng)。Docker技術的體系架構具體見圖1。
2 在軟件開發(fā)中應用Docker技術
在很多情況下,在對開發(fā)環(huán)境進行搭建是程序員總是會遇到各種問題,例如軟件安裝不便、具有較差的可移植性和隔離性等,這就需要在本地搭建虛擬機來解決這一系列的問題。然而搭建虛擬機非常麻煩,并非最佳的解決方案。此時程序員可以選擇Docker作為一種輕量級的方案,Docker不僅具有所有的虛擬機功能,還具有一些虛擬機不具備的功能,例如可以使用Docker使多容器同時運行,而且與傳統(tǒng)的虛擬機相比,Docker對CPU、磁盤、內(nèi)存的消耗較低。
2.1 在開發(fā)環(huán)境搭建中應用Docker
程序員在搭建開發(fā)環(huán)境時可以應用Docker技術,為了使開發(fā)環(huán)境具有良好的擴展性,同時對磁盤空間進行節(jié)約,先要將基礎的Image搭建起來,然后在此基礎上對這個基礎的Image進行擴展,實現(xiàn)不同的開發(fā)環(huán)境。
為了能夠在,host的主機中便利地進行代碼編輯,程序員有時候還需要在Container中映射host 主機(宿主)上的目錄。此時,程序員無需將這些目錄手動復制到Container上,并Container進行重啟。而是可以直接在Container中對其進行運行和編輯。
2.2 Docker技術的應用架構
在軟件開發(fā)的過程中總是需要考慮到很多問題,為了保障產(chǎn)品能夠成功發(fā)布,開發(fā)者總是要對各種App、中間件和OS進行考慮,這個過程具有一定的管理難度,這也是軟件行業(yè)中普遍存在的一個問題。在很多應用實例中都可以使用Docker來進行簡化部署,例如大數(shù)據(jù)應用、數(shù)據(jù)庫應用、后臺應用、Web 應用等??梢詰肈ocker技術將消息列隊Hadoop 集群打包起來,使其成為一個簡單的Image 部署。
總體而言運用Docker技術來對一個應用進行部署并不復雜,可以在相同的image上配備不同的運行時數(shù)據(jù)和軟件,具體情況見圖2。
在應用的過程中,Docker技術會自動搭配各種網(wǎng)絡、存儲,對應用進行下載和安裝,然后再對參數(shù)進行配置,將其打包后向Image上傳。程序員可以根據(jù)需求選擇自動創(chuàng)建或手動創(chuàng)建的方式來創(chuàng)建Container。如果DockerFile 文件已經(jīng)存在于源碼庫中,通過自動創(chuàng)建的容器中就已經(jīng)具有了應用以及所有的應用依賴項。程序員可以在私有Docker或者公有Docker中運用DockerSearch 命令對Containers進行搜索,同時程序員還可以選擇在注冊表里使用DockerPull 命令對Containers進行推送。停止、運行、啟動等操作都可以通過DockerRun 命令來實現(xiàn)。
3 結語
Docker技術以及特有的技術優(yōu)勢迅速的發(fā)展和廣泛的應用,近年來大量的開源項目和創(chuàng)業(yè)公司都與Docker技術有著密切的聯(lián)系,Amazon、Microsoft、紅帽、Rackspace、google、IBM也也對容器技術上加磅予以了支持,而且Docker技術已經(jīng)得到了虛擬化巨頭 Vmware的認可與支持。當前默認使用的Docker主要是AUFS、LXC,但并不對這二者進行強制綁定。