docker容器和倉(cāng)庫(kù)的區(qū)別是什么

區(qū)別:1、容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例,鏡像啟動(dòng)后的一個(gè)實(shí)例稱為容器,是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用;2、倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所,倉(cāng)庫(kù)注冊(cè)服務(wù)器一般存放多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)又有多個(gè)鏡像,每個(gè)鏡像又有不同的標(biāo)簽。

docker容器和倉(cāng)庫(kù)的區(qū)別是什么

本教程操作環(huán)境:linux7.3系統(tǒng)、docker-1.13.1版、Dell G3電腦。

docker容器和倉(cāng)庫(kù)的區(qū)別是什么

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,基于 Go 語(yǔ)言 并遵從apache2.0協(xié)議開(kāi)源。

Docker 可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化

容器是完全使用沙箱機(jī)制,每個(gè)容器內(nèi)運(yùn)行一個(gè)應(yīng)用,不同的容器相互隔離,容器之間不會(huì)有任何接口(類似 iphone 的 app),容器之間也可以建立通信機(jī)制。更重要的是容器性能開(kāi)銷極低。容器的創(chuàng)建和停止都十分快速,容器自身對(duì)資源的需求也十分有限。

Docker 引擎的基礎(chǔ)是 Linux 容器(Linux Containers, LXC)技術(shù)。

Docker 鏡像

Docker鏡像(Image)類似于虛擬機(jī)鏡像,可以將它理解為一個(gè)面向 Docker 引擎的只讀的模板。包含了文件系統(tǒng)。

例如:一個(gè)鏡像可以只包含一個(gè)完整的 ubuntu 操作系統(tǒng)環(huán)境,可以把它稱為一個(gè) Ubuntu 鏡像。鏡像里面僅安裝了 Apache 應(yīng)用程序(或用戶需要的其他軟件)。可以把它稱為一個(gè) Apache 鏡像。

鏡像是創(chuàng)建 Docker 容器的基礎(chǔ)。通過(guò)版本管理和增量的文件系統(tǒng),Docker 提供了一套十分簡(jiǎn)單的機(jī)制來(lái)創(chuàng)建和更新現(xiàn)有的鏡像,用戶甚至可以從網(wǎng)上下載一個(gè)已經(jīng)做好的應(yīng)用鏡像,并直接使用。

Docker 容器

Docker容器(Container)類似于一個(gè)輕量級(jí)的沙箱,Docker 利用容器來(lái)運(yùn)行和隔離應(yīng)用。

容器是從鏡像創(chuàng)建的應(yīng)用運(yùn)行實(shí)例。可以將其啟動(dòng)、開(kāi)始、停止、刪除,而這些容器都是彼此相互隔離的、互不可見(jiàn)的。

可以把容器看做是一個(gè)簡(jiǎn)易版的 Linux 系統(tǒng)環(huán)境 (包括 root 用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等) 以及運(yùn)行在其中的應(yīng)用程序打包而成的盒子。

鏡像自身是只讀的。容器從鏡像啟動(dòng)的時(shí)候,會(huì)在鏡像的最上層創(chuàng)建一個(gè)可寫層。

Docker 倉(cāng)庫(kù)

Docker倉(cāng)庫(kù)(Repository)類似于代碼倉(cāng)庫(kù),它是 Docker 集中存放鏡像文件的場(chǎng)所。

有時(shí)候會(huì)看到有資料將 Docker 倉(cāng)庫(kù)和倉(cāng)庫(kù)注冊(cè)服務(wù)器 (Registry) 混為一談,并不嚴(yán)格區(qū)分。實(shí)際上,倉(cāng)庫(kù)注冊(cè)服務(wù)器是存放倉(cāng)庫(kù)的地方,其上往往存放著多個(gè)倉(cāng)庫(kù)。每個(gè)倉(cāng)庫(kù)集中存放某一類鏡像,往往包括多個(gè)鏡像文件,通過(guò)不同的標(biāo)簽 (tag) 來(lái)進(jìn)行區(qū)分。

例如存放 Ubuntu 操作系統(tǒng)鏡像的倉(cāng)庫(kù)稱為 Ubuntu 倉(cāng)庫(kù),其中可能包括 14.04、12.04 等不同版本的鏡像。

根據(jù)所存儲(chǔ)的鏡像公開(kāi)分享與否,Docker 倉(cāng)庫(kù)可以分為公開(kāi)倉(cāng)庫(kù) (public) 和私有倉(cāng)庫(kù) (private) 兩種形式。

目前,最大的公開(kāi)倉(cāng)庫(kù)是官方提供的 Docker Hub,其中存放了數(shù)量龐大的鏡像供用戶下載。國(guó)內(nèi)不少云服務(wù)提供商 (如時(shí)速云、阿里云等) 也提供了倉(cāng)庫(kù)的本地源,可以提供穩(wěn)定的國(guó)內(nèi)訪問(wèn)。

當(dāng)然,用戶如果不希望公開(kāi)分享自己的鏡像文件,Docker 也支持用戶在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個(gè)只能自己訪問(wèn)的私有倉(cāng)庫(kù)。當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用 push 命令將它上傳到指定的公有或者私有倉(cāng)庫(kù)。這樣用戶下次在另外一臺(tái)機(jī)器上使用該鏡像時(shí),只需要將其從倉(cāng)庫(kù)上 pull 下來(lái)就可以了。

鏡像、容器、倉(cāng)庫(kù)的區(qū)別

  • docker 鏡像(Images)

一個(gè)只讀模板,可以用來(lái)創(chuàng)建容器,一個(gè)鏡像可以創(chuàng)建多個(gè)容器;

Docker 提供了一個(gè)很簡(jiǎn)單的機(jī)制來(lái)創(chuàng)建和更新現(xiàn)有的鏡像,甚至可以直接從其他人那里獲取做好的鏡像直接使用;

可以理解為 Java 中的類;

  • docker 容器(Container)

容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例,也就是鏡像啟動(dòng)后的一個(gè)實(shí)例稱為容器,是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用;

Docker 利用容器來(lái)運(yùn)行應(yīng)用,他可以被啟動(dòng)、開(kāi)始、停止、刪除,每個(gè)容器都是相互隔離的、保證安全的平臺(tái);

可以把容器看做是一個(gè)簡(jiǎn)易版的 Linux(包括 root 用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序;

可以理解為 Java 中通過(guò)類創(chuàng)建的實(shí)例;

  • docker 倉(cāng)庫(kù)(Resoisitory)

倉(cāng)庫(kù)是集中存放鏡像文件的場(chǎng)所,類似 git 代碼倉(cāng)庫(kù)等;

倉(cāng)庫(kù)(Respository)和倉(cāng)庫(kù)注冊(cè)服務(wù)器(Registry)是有區(qū)別的。倉(cāng)庫(kù)注冊(cè)服務(wù)器一般存放多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)又有多個(gè)鏡像,每個(gè)鏡像又有不同的標(biāo)簽 tag;

倉(cāng)庫(kù)分為公開(kāi)倉(cāng)庫(kù)(public)和私有倉(cāng)庫(kù)(private)兩種形式;

最大的公開(kāi)倉(cāng)庫(kù)是 Docker Hub,國(guó)內(nèi)的公開(kāi)倉(cāng)庫(kù)有阿里云等;

可以在本地網(wǎng)絡(luò)創(chuàng)建一個(gè)私有倉(cāng)庫(kù);

當(dāng)創(chuàng)建好自己的鏡像后,可以通過(guò) push 命令把它上傳到公開(kāi)或私有倉(cāng)庫(kù);

倉(cāng)庫(kù)的概念類似 Git,倉(cāng)庫(kù)注冊(cè)服務(wù)器可以理解為 github 這種托管服務(wù);

  • docker 主機(jī)(Host)

一個(gè)物理或虛擬的機(jī)器用來(lái)執(zhí)行 Docker 守護(hù)進(jìn)程和容器。

  • docker客戶端(Client)

客戶端通過(guò)命令行或其他工具使用 Docker。

推薦學(xué)習(xí):《docker視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享