1. 為什么要使用 Docker厌处?
作為一種新興的虛擬化方式,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢。
首先铺韧,Docker 容器的啟動可以在秒級實現(xiàn),這相比傳統(tǒng)的虛擬機方式要快得多缓淹。 其次哈打,Docker 對系統(tǒng)資源的利用率很高塔逃,一臺主機上可以同時運行數(shù)千個 Docker 容器。
容器除了運行其中應用外料仗,基本不消耗額外的系統(tǒng)資源湾盗,使得應用的性能很高,同時系統(tǒng)的開銷盡量小立轧。
傳統(tǒng)虛擬機方式運行 10 個不同的應用就要起 10 個虛擬機淹仑,而Docker 只需要啟動 10 個隔離的應用即可。
具體說來肺孵,Docker 在如下幾個方面具有較大的優(yōu)勢匀借。
1.1 更快速的交付和部署
對開發(fā)和運維(devop)人員來說,最希望的就是一次創(chuàng)建或配置平窘,可以在任意地方正常運行吓肋。
開發(fā)者可以使用一個標準的鏡像來構建一套開發(fā)容器,開發(fā)完成之后瑰艘,運維人員可以直接使用這個容器來部署代碼是鬼。 Docker 可以快速創(chuàng)建容器,快速迭代應用程序紫新,并讓整個過程全程可見均蜜,使團隊中的其他成員更容易理解應用程序是如何創(chuàng)建和工作的。 Docker 容器很輕很快芒率!容器的啟動時間是秒級的囤耳,大量地節(jié)約開發(fā)、測試偶芍、部署的時間充择。
1.2 更高效的虛擬化
Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化匪蟀,因此可以實現(xiàn)更高的性能和效率椎麦。
1.3 更輕松的遷移和擴展
Docker 容器幾乎可以在任意的平臺上運行,包括物理機材彪、虛擬機观挎、公有云、私有云段化、個人電腦嘁捷、服務器等。 這種兼容性可以讓用戶把一個應用程序從一個平臺直接遷移到另外一個穗泵。
1.4 更簡單的管理
使用 Docker普气,只需要小小的修改谜疤,就可以替代以往大量的更新工作佃延。所有的修改都以增量的方式被分發(fā)和更新现诀,從而實現(xiàn)自動化并且高效的管理。
1.5 對比傳統(tǒng)虛擬機總結
2. 基本概念
容器 = 鏡像 + 讀寫層
2.1 鏡像(Image)
Docker 鏡像就是一個只讀的模板履肃。
例如:一個鏡像可以包含一個完整的 ubuntu 操作系統(tǒng)環(huán)境仔沿,里面僅安裝了 Apache 或用戶需要的其它應用程序。
鏡像可以用來創(chuàng)建 Docker 容器尺棋。
Docker 提供了一個很簡單的機制來創(chuàng)建鏡像或者更新現(xiàn)有的鏡像封锉,用戶甚至可以直接從其他人那里下載一個已經(jīng)做好的鏡像來直接使用。
2.1 容器(container)
Docker 利用容器來運行應用膘螟。
容器是從鏡像創(chuàng)建的運行實例成福。它可以被啟動、開始荆残、停止奴艾、刪除。每個容器都是相互隔離的内斯、保證安全的平臺蕴潦。
可以把容器看做是一個簡易版的 Linux 環(huán)境(包括root用戶權限、進程空間俘闯、用戶空間和網(wǎng)絡空間等)和運行在其中的應用程序潭苞。
*注:鏡像是只讀的,容器在啟動的時候創(chuàng)建一層可寫層作為最上層真朗。所以也可以簡單的理解為“容器 = 鏡像 + 讀寫層”此疹。
2.3 倉庫(Repository)
倉庫是集中存放鏡像文件的場所。有時候會把倉庫和倉庫注冊服務器(Registry)混為一談遮婶,并不嚴格區(qū)分秀菱。實際上,倉庫注冊服務器上往往存放著多個倉庫蹭睡,每個倉庫中又包含了多個鏡像衍菱,每個鏡像有不同的標簽(tag)。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式肩豁。
最大的公開倉庫是 Docker Hub脊串,存放了數(shù)量龐大的鏡像供用戶下載。 國內的公開倉庫包括 Docker Pool等清钥,可以提供大陸用戶更穩(wěn)定快速的訪問琼锋。
當然,用戶也可以在本地網(wǎng)絡內創(chuàng)建一個私有倉庫祟昭。
當用戶創(chuàng)建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉庫缕坎,這樣下次在另外一臺
機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了篡悟。
*注:Docker 倉庫的概念跟 Git 類似谜叹,注冊服務器可以理解為 GitHub 這樣的托管服務匾寝。