日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

容器和容器镜像的区别,您真的了解吗

發布時間:2023/12/19 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 容器和容器镜像的区别,您真的了解吗 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多剛剛接觸容器技術的朋友,不容易弄清楚容器,容器鏡像和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的原創文章,請關注公眾號"汪子熙":

總結

以上是生活随笔為你收集整理的容器和容器镜像的区别,您真的了解吗的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。