004_Docker的鏡像、容器、倉庫

1. 摘要

Docker包括三個基本概念:鏡像(Image)、容器(Container)、倉庫(Repository)。

2. 理解鏡像

一般操作系統(tǒng)都會分為內(nèi)核和用戶空間。對于Linux而言,內(nèi)核啟動后,會掛載root文件系統(tǒng)為其提供用戶空間支持。而Docker鏡像(Image),就相當(dāng)于是一個root文件系統(tǒng)。比如官方鏡像ubuntu:18.04就包含了完整的一套Ubuntu 18.04最小系統(tǒng)的root文件系統(tǒng)。

Docker鏡像是一個特殊的文件系統(tǒng),除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變。

3. 理解容器

鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計中的類和實例一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等。

容器的實質(zhì)是進程,但與直接在宿主執(zhí)行的進程不同,容器進程運行于屬于自己的獨立的命名空間。因此容器可以擁有自己的root文件系統(tǒng)、自己的網(wǎng)絡(luò)配置、自己的進程空間,甚至自己的用戶ID空間。容器內(nèi)的進程是運行在一個隔離的環(huán)境里,使用起來,就好像是在一個獨立于宿主的系統(tǒng)下操作一樣。這種特性使得容器封裝的應(yīng)用比直接在宿主運行更加安全。也因為這種隔離的特性,很多人初學(xué)Docker時常常會混淆容器和虛擬機。

每一個容器運行時,是以鏡像為基礎(chǔ)層,在其上創(chuàng)建一個當(dāng)前容器的存儲層,我們可以稱這個為容器運行時讀寫而準(zhǔn)備的存儲層為容器存儲層。容器存儲層的生存周期和容器一樣,容器消亡時,容器存儲層也隨之消亡。因此,任何保存于容器存儲層的信息都會隨容器刪除而丟失。

4. 理解倉庫

鏡像構(gòu)建完成后,可以很容易的在當(dāng)前宿主機上運行,但是,如果需要在其它服務(wù)器上使用這個鏡像,我們就需要一個集中的存儲、分發(fā)鏡像的服務(wù),Docker Registry就是這樣的服務(wù)。

一個Docker Registry中可以包含多個倉庫(Repository);每個倉庫可以包含多個標(biāo)簽(Tag);每個標(biāo)簽對應(yīng)一個鏡像。

通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標(biāo)簽就常用于對應(yīng)該軟件的各個版本。我們可以通過** <倉庫名>:<標(biāo)簽>** 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標(biāo)簽,將以latest作為默認(rèn)標(biāo)簽。

以Ubuntu鏡像為例,ubuntu是倉庫的名字,其內(nèi)包含有不同的版本標(biāo)簽,如16.04, 18.04。我們可以通過ubuntu:16.04,或者ubuntu:18.04來具體指定所需哪個版本的鏡像。如果忽略了標(biāo)簽,比如ubuntu,那將視為ubuntu:latest。

倉庫(Repository)是集中存放鏡像的地方。服務(wù)器是管理倉庫的具體服務(wù)器,每個服務(wù)器上可以有多個倉庫,而每個倉庫下面有多個鏡像。

5. Docker hub服務(wù)

官方Docker Hub提供Registry公開服務(wù),開放大量高質(zhì)量的官方鏡像給用戶使用,允許用戶管理自己的鏡像。


image.png

參考:

<u>https://yeasy.gitbook.io/docker_practice/basic_concept/image</u>

Docker的鏡像、容器、倉庫 - 知乎 (zhihu.com)
Docker的鏡像、容器、倉庫 (qq.com)

?著作權(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)容

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