摘要:我們首先來看容器和容器鏡像。容器和容器鏡像一樣,也是若干層的疊加,唯一區別是所有只讀層的最上面一層,是一層可讀可寫層,如上圖綠色圖例所示。希望這篇文章能幫助大家理解容器和容器鏡像的區別。
很多剛剛接觸容器技術的朋友,不容易弄清楚容器,容器鏡像和Docker這幾個詞的區別和聯系。
我們首先來看容器和容器鏡像。舉個例子,執行命令行docker search nginx,搜索結果的一條條記錄就是一個個容器鏡像。
所謂鏡像,就是一個靜態概念,一個鏡像由若干只讀層(read-only layer)構成。
上圖左邊是Docker鏡像的內部實現細節,我們能看到多個只讀層疊加在一起,層與層之間通過指針關聯,這些層能夠在運行Docker的宿主機的文件系統上訪問到。
Linux的統一文件系統(union file system)技術將這些疊加的只讀層合并成一個文件系統,該系統為這些只讀層提供了一個統一的視角,從而為Docker的用戶隱藏了多層的存在。
從Docker用戶的視角出發,一個Docker鏡像只存在一個文件系統,即上圖右邊所示。
這些文件系統的設計是Docker實現細節,一般情況下我們不用去深究。但如果您足夠好奇,使用命令sudo tree瀏覽目錄 /var/lib/docker即可:
比如我用命令docker images瀏覽下載到本地的docker鏡像:
其中一個叫jerry-nginx的鏡像,是一個web應用,它的所有內容能在/var/lib/docker目錄下的這個目錄查到:
講完了容器鏡像,我們再來看容器。
容器和容器鏡像一樣,也是若干層的疊加,唯一區別是所有只讀層的最上面一層,是一層可讀可寫層,如上圖綠色圖例所示。
初學者可以記住這個簡單的公式:容器 = 容器鏡像 + 可讀可寫層
我們如果用命令docker ps --all查看本機所有容器列表,會發現有的容器處于運行狀態,有的處于退出狀態。
因此,一個處于運行狀態的容器(running container)包含一個可讀寫的文件系統加上隔離的進程空間。
容器里的進程可以對這個可讀寫文件系統內的文件進行修改、刪除、創建等操作。
鏡像里每一層其實都能在docker文件夾的containers子目錄下找到:
上圖每一個紅色文件夾代表鏡像里的一層,藍色文件包含了該層運行時的日志文件,或者網絡相關配置等。
做個實驗:
ubuntu這個容器執行結束后,使用find / -name i042416.txt文件,這說明docker運行時能對宿主機的文件系統進行寫操作。
下面分析幾個常用的易混淆的命令。
docker create
先看它的幫助文檔:
試著執行以下:
產生一個輸出id:
7ee10851c3f1e53bbd35e5f196f34de560afa1a20d9bf1ced587630dbcda877b
create創建的容器,狀態變為created:
docker create命令給通過命令行傳入的容器鏡像創建了一個新的可讀可寫層,從而生成了一個新的容器實例:
然后再執行docker start,輸入docker create創建的容器實例ID,就可以啟動這個容器實例了。
而docker run其實就是docker create和docker start這兩個命令合二為一的版本。
希望這篇文章能幫助大家理解容器和容器鏡像的區別。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27631.html
摘要:從命名上就知道這是一篇簡單粗暴的新手入門教程,為什么要簡單粗暴我認為有自學能力的人幫他入門就夠了,不能自學的一時半會兒也教不會,不符合入門教程的初衷,建議出門左拐去找找視頻教程本章目標大概了解是個什么玩意知道常用的指令參數能啟動一個容器不然 從命名上就知道這是一篇簡單粗暴的docker新手入門教程, 為什么要簡單粗暴? 我認為有自學能力的人幫他入門就夠了, 不能自學的一時半會兒也教不會...
摘要:開場白作為一個技術團隊的,你是如何保證成員的開發環境達到公司的標準,或者是你定制的最低要求的如果你的回答是差不多就行了,有問題再說,那么,你已經在給自己挖坑了。好的,成員們開始構建你定制的開發環境了。 開場白 作為一個技術團隊的Leader,你是如何保證成員的開發環境達到公司的標準,或者是你定制的最低要求的?如果你的回答是:差不多就行了,有問題再說,那么,你已經在給自己挖坑了。 同事A...
摘要:它目前由一個兩人的團隊領導來自的和。因為目前的架構,應用程序和服務是為正常的多程序操作系統環境設計的,所以需要去尋找一種以的方式來工作或使用工具來支持。是一個告訴如何從鏡像用特定的應用程序來創建容器的腳本。公司受到風投支持,積極投入市場。 這篇文章從兩個部分來探討LXC,LXC和Docker的容器托管,以及輕便的容器技術將取代虛擬技術的可能性。 LXC有可能會改變我們如何運行和縮放應用...
摘要:在被納入后,與之爭日趨白熱化。一如微軟曾經試圖通過在中安裝來排擠,現在正在嘗試將融入到,以此來打擊,,和。如同微軟確確實實提升了的性能。瀏覽器突出了微軟的優勢,所以他們在年內都沒有繼續開發了。 在 Swarm 被納入 Docker 1.12后,Swarm 與 K8S 之爭日趨白熱化。本文作者 Adriaan de Jonge 身為 Xebia CTO ,專精 DevOps 及持續交付,...
摘要:那都是老一套了。已死已經沒有人用了。現在所有的一切都在容器化,它是未來。這是確保它可靠的唯一方式。我現在需要一個是的,為了穩定性。我猜是規模的對,沒錯。我明白了,好吧,我懂了。那我來重復一遍確保我領悟了這些。 這是一篇在國外社區非常火的文章。由CircleCI創始人所寫,追逐熱點新技術的程序員與只想做個簡單web應用的程序員對話,Docker到底能否解決簡單小應用的問題嗎?Herok...
閱讀 3939·2021-10-09 09:43
閱讀 2871·2021-10-08 10:05
閱讀 2734·2021-09-08 10:44
閱讀 882·2019-08-30 15:52
閱讀 2809·2019-08-26 17:01
閱讀 3016·2019-08-26 13:54
閱讀 1650·2019-08-26 10:48
閱讀 807·2019-08-23 14:41