Docker初探

什么是Docker?

簡(jiǎn)介:Docker是一個(gè)開(kāi)源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器。開(kāi)發(fā)者在筆記本上編譯測(cè)試通過(guò)的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal、OpenStack 集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。

Docker通常用于如下場(chǎng)景:

1.web應(yīng)用的自動(dòng)化打包和發(fā)布;

2.自動(dòng)化測(cè)試和持續(xù)集成、發(fā)布;

3.在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫(kù)或其他的后臺(tái)應(yīng)用;

4.從頭編譯或者擴(kuò)展現(xiàn)有的OpenShift或Cloud Foundry平臺(tái)來(lái)搭建自己的PaaS環(huán)境。

為什么要使用Docker

作為一種新興的虛擬化方式,Docker與傳統(tǒng)的虛擬化方式相比具有更多的優(yōu)勢(shì)。

首先,Docker容器啟動(dòng)可以秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多。其次,Docker對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)可以同時(shí)運(yùn)行數(shù)千個(gè)Docker容器

容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用性能很高,同時(shí)系統(tǒng)的開(kāi)銷盡量小。傳統(tǒng)虛擬機(jī)運(yùn)行10個(gè)不同的應(yīng)用就要起10個(gè)虛擬機(jī),而Docker,只需要啟動(dòng)10個(gè)隔離的應(yīng)用即可,具體來(lái)說(shuō)Docker具有如下幾個(gè)方面的優(yōu)勢(shì):

1.更快速的交付部署

對(duì)開(kāi)發(fā)和運(yùn)維人員來(lái)說(shuō),最希望就是一次創(chuàng)建或者部署,可以在任意地方運(yùn)行。

開(kāi)發(fā)者可以使用一個(gè)標(biāo)準(zhǔn)鏡像來(lái)構(gòu)建一套開(kāi)發(fā)容器,開(kāi)發(fā)完成之后,運(yùn)維人員可以直接使用這個(gè)容器來(lái)部署代碼。Docker可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個(gè)過(guò)程可見(jiàn),使團(tuán)隊(duì)中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的。Docker容器很輕很快!容器的啟動(dòng)時(shí)間是秒級(jí)的,大量節(jié)約了開(kāi)發(fā),測(cè)試,部署的時(shí)間。

2.更高效的虛擬化

Docker容器的運(yùn)行不需要額外的hypervisor支持,它是內(nèi)核級(jí)的虛擬化,因此可以實(shí)現(xiàn)更高的性能和效率。

3.更輕松的遷移和拓展

Docker容器幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī),虛擬機(jī),公有云,私有云,個(gè)人電腦,服務(wù)器等。這種兼容性可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺(tái)直接遷移到另外一個(gè)。

4.更簡(jiǎn)單的管理

使用Docker,只需要小小的修改,就可以替代以往大量的更新工作,所有的修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的管理。


Docker的三個(gè)基本概念

鏡像(Image)

容器(Container)

倉(cāng)庫(kù)(Repository)

ps:了解這個(gè)3個(gè)概念,就理解了Docker的整個(gè)生命周期了

Docker鏡像

Docker鏡像就是一個(gè)只讀的版本

例如:一個(gè)鏡像可以包含一個(gè)完整的ubuntu操作系統(tǒng)環(huán)境,里面僅安裝了Apache或用戶需要的其他應(yīng)用程序。

鏡像可以用來(lái)創(chuàng)建Docker容器

Docker提供了一個(gè)很簡(jiǎn)單的機(jī)制來(lái)創(chuàng)建鏡像或者更新現(xiàn)有的鏡像,用戶甚至可以直接從其他人哪里下載一個(gè)鏡像來(lái)直接使用。

Docker容器

Docker利用容器來(lái)運(yùn)行應(yīng)用

容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例,它可以被啟動(dòng),開(kāi)始,停止,刪除。每個(gè)容器都是相互隔離的,保證安全。

可以把容器看做一個(gè)簡(jiǎn)易版的Linux環(huán)境(包括root用戶權(quán)限,進(jìn)程空間,用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行其中的應(yīng)用程序。

注意:鏡像是只讀的,容器在啟動(dòng)的時(shí)候創(chuàng)建一層可寫(xiě)層作為最上層。

Docker倉(cāng)庫(kù)

倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所,有時(shí)候會(huì)把倉(cāng)庫(kù)和倉(cāng)庫(kù)注冊(cè)服務(wù)器混為一談,并不嚴(yán)格區(qū)分。實(shí)際上,倉(cāng)庫(kù)注冊(cè)服務(wù)器上往往存放著多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)又包含了多個(gè)鏡像,每個(gè)鏡像有不同的標(biāo)簽。

最大的公開(kāi)倉(cāng)庫(kù)是Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載,國(guó)內(nèi)的公開(kāi)倉(cāng)庫(kù)包括 Docker Pool等,可以提供大陸用戶更穩(wěn)定快速的訪問(wèn)。

當(dāng)然,用戶也可以在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個(gè)私有的倉(cāng)庫(kù)。

當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用push命令將它上傳到公有倉(cāng)庫(kù)或者私有倉(cāng)庫(kù),這樣下次再另外一臺(tái)機(jī)器上使用這個(gè)鏡像的時(shí)候,只需要從倉(cāng)庫(kù)上pull下來(lái)就可以了。

注意:Docker倉(cāng)庫(kù)的概念跟GIt相似,注冊(cè)服務(wù)器可以理解為GitHub這樣的托管服務(wù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,627評(píng)論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,543評(píng)論 0 120
  • 寫(xiě)這篇文章主要是為了今后畢業(yè)論文素材上的整理,同時(shí)對(duì)docker進(jìn)行鞏固溫習(xí)。大綱: docker簡(jiǎn)介docker...
    胡圖仙人閱讀 7,500評(píng)論 2 96
  • 0. 前言 docker是什么?docker是用GO語(yǔ)言開(kāi)發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)。可...
    sessionboy閱讀 3,884評(píng)論 2 49
  • 我并不是不幸福,也沒(méi)什么心理心陰影,也沒(méi)吃過(guò)很大的苦,只不過(guò)人生的路有點(diǎn)坎坷,可是,光是活在這世上,我就很吃力了。...
    Mandy曼迪閱讀 433評(píng)論 0 0