Docker 基本原理

Docker 是什么

Docker 一詞的英文直譯為“碼頭工人”,但是實際上它更像是碼頭上的集裝箱。類比于集裝箱,Docker 實際上制定了一套標準,基于這套標準制作出來的容器可以輕松地解決應(yīng)用發(fā)布與運維遇到的難題。

Docker 帶來的好處主要有以下幾點:

1、整體交付:把應(yīng)用的依賴打包到 docker 鏡像中,保證部署的每一臺機器依賴都是完整的,同時使用容器技術(shù)屏蔽了操作系統(tǒng)和硬件的差異,使得開發(fā)、測試、部署、運維過程中能夠保持一致,解決了很多維護難題。

2、資源利用率高:相比于 VM ,docker 耗費的系統(tǒng)資源更少,空閑的內(nèi)存可以被宿主機和其他容器使用,相同的資源可以部署更多容器。

3、更快的啟動時間:docker?只是隔離了程序的依賴關(guān)系,沒有 Guest OS,啟動速度比 VM 快得多。

傳統(tǒng)的虛擬機技術(shù)是虛擬出一套硬件,在虛擬的硬件上運行一個操作系統(tǒng),虛擬機中的應(yīng)用在 Guest OS 中運行。而 docker 容器內(nèi)的應(yīng)用直接在宿主機上運行,容器沒有虛擬出硬件也沒有自己的內(nèi)核,是一種輕量級的虛擬化技術(shù)。從下圖的對比中可以看出,Docker 的 Docker Engine 層替代了虛擬機中的 Hypervisor 層和 Guest OS 層。

Docker 基本概念

下圖展示了 Docker 技術(shù)的基本組成,主要包括 Client、Deamon、Container、Images 和Registry。

Docker Client:Docker 客戶端,提供給用戶一個終端,用戶輸入Docker 提供的命令來管理本地或遠程的服務(wù)器。

Docker Daemon:服務(wù)端守護進程,接收 Client 發(fā)送的命令并執(zhí)行相應(yīng)的操作。

Docker Images:Docker 鏡像,一個特殊的文件系統(tǒng),封裝了運行時需要的庫、資源、應(yīng)用等。

Docker Container:Docker 容器,提供了運行環(huán)境,通過Docker Images 啟動,在Docker Images 基礎(chǔ)上運行應(yīng)用。

Docker Registry:Docker 倉庫,用來管理鏡像,實現(xiàn)鏡像的上傳、下載、瀏覽。

Docker 鏡像

Docker 鏡像是一個特殊的文件系統(tǒng),這個文件系統(tǒng)封裝了運行時需要的庫、資源、應(yīng)用等。Docker 鏡像采用分層存儲結(jié)構(gòu)。構(gòu)建時一層一層地進行,每一層構(gòu)建好后不再變化,后一層以前一層為基礎(chǔ)進行構(gòu)建,最終組成多層文件系統(tǒng)。

一個 Docker 鏡像可以構(gòu)建于另一個 Docker 鏡像之上,這種層疊關(guān)系可以是多層的。第1層的鏡像層我們稱之為基礎(chǔ)鏡像(Base Image),其他層的鏡像(除了最頂層)我們稱之為父層鏡像(Parent Image)。這些鏡像繼承了他們的父層鏡像的所有屬性和設(shè)置,并在Dockerfile中添加了自己的配置。

Docker 容器

Docker 容器本質(zhì)上是一個進程,運行于自己獨立的命名空間中,所有的數(shù)據(jù)都存儲在容器中。容器銷毀后,這些數(shù)據(jù)也隨之消失。多個容器互相之間是隔離的,一個容器所做的任何變更都只影響容器自己。

運行容器需要指定一個鏡像,容器會在鏡像上增加一個可寫層?;A(chǔ)鏡像本身的變更不會影響運行中的容器。需要執(zhí)行 docker commit,才能保存容器中的數(shù)據(jù),這時在鏡像的基礎(chǔ)上疊加上容器的存儲層生成一個新的鏡像。

鏡像與容器的關(guān)系就像是面向?qū)ο笾蓄惻c實例的關(guān)系,鏡像是靜態(tài)的定義,而容器是運行時的實體。容器可以進行創(chuàng)建、啟動、停止、刪除等操作。

分享學習筆記和技術(shù)總結(jié),內(nèi)容涉及 Java 進階、架構(gòu)設(shè)計、前沿技術(shù)、算法與數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫、中間件等多個領(lǐng)域。本文首發(fā)于公眾號“后端開發(fā)那點事兒”。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,873評論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,764評論 0 120
  • 寫這篇文章主要是為了今后畢業(yè)論文素材上的整理,同時對docker進行鞏固溫習。大綱: docker簡介docker...
    胡圖仙人閱讀 7,782評論 2 96
  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,523評論 0 27
  • 文|圖 舒行之 今日歸家,甚是乏累。及至家中,已然困倦不已。拖著一身疲憊的我,眼睛一張一合之間,偶然瞥見窗外的云朵...
    舒行之閱讀 399評論 13 7

友情鏈接更多精彩內(nèi)容