區(qū)別:1、容器是從鏡像創(chuàng)建的運行實例,鏡像啟動后的一個實例稱為容器,是獨立運行的一個或一組應(yīng)用;2、倉庫是集中存放鏡像文件的場所,倉庫注冊服務(wù)器一般存放多個倉庫,每個倉庫又有多個鏡像,每個鏡像又有不同的標簽。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker-1.13.1版、Dell G3電腦。
docker容器和倉庫的區(qū)別是什么
Docker 是一個開源的應(yīng)用容器引擎,基于 Go 語言 并遵從apache2.0協(xié)議開源。
Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。
容器是完全使用沙箱機制,每個容器內(nèi)運行一個應(yīng)用,不同的容器相互隔離,容器之間不會有任何接口(類似 iphone 的 app),容器之間也可以建立通信機制。更重要的是容器性能開銷極低。容器的創(chuàng)建和停止都十分快速,容器自身對資源的需求也十分有限。
Docker 引擎的基礎(chǔ)是 Linux 容器(Linux Containers, LXC)技術(shù)。
Docker 鏡像
Docker鏡像(Image)類似于虛擬機鏡像,可以將它理解為一個面向 Docker 引擎的只讀的模板。包含了文件系統(tǒng)。
例如:一個鏡像可以只包含一個完整的 ubuntu 操作系統(tǒng)環(huán)境,可以把它稱為一個 Ubuntu 鏡像。鏡像里面僅安裝了 Apache 應(yīng)用程序(或用戶需要的其他軟件)??梢园阉Q為一個 Apache 鏡像。
鏡像是創(chuàng)建 Docker 容器的基礎(chǔ)。通過版本管理和增量的文件系統(tǒng),Docker 提供了一套十分簡單的機制來創(chuàng)建和更新現(xiàn)有的鏡像,用戶甚至可以從網(wǎng)上下載一個已經(jīng)做好的應(yīng)用鏡像,并直接使用。
Docker 容器
Docker容器(Container)類似于一個輕量級的沙箱,Docker 利用容器來運行和隔離應(yīng)用。
容器是從鏡像創(chuàng)建的應(yīng)用運行實例??梢詫⑵鋯?、開始、停止、刪除,而這些容器都是彼此相互隔離的、互不可見的。
可以把容器看做是一個簡易版的 Linux 系統(tǒng)環(huán)境 (包括 root 用戶權(quán)限、進程空間、用戶空間和網(wǎng)絡(luò)空間等) 以及運行在其中的應(yīng)用程序打包而成的盒子。
鏡像自身是只讀的。容器從鏡像啟動的時候,會在鏡像的最上層創(chuàng)建一個可寫層。
Docker 倉庫
Docker倉庫(Repository)類似于代碼倉庫,它是 Docker 集中存放鏡像文件的場所。
有時候會看到有資料將 Docker 倉庫和倉庫注冊服務(wù)器 (Registry) 混為一談,并不嚴格區(qū)分。實際上,倉庫注冊服務(wù)器是存放倉庫的地方,其上往往存放著多個倉庫。每個倉庫集中存放某一類鏡像,往往包括多個鏡像文件,通過不同的標簽 (tag) 來進行區(qū)分。
例如存放 Ubuntu 操作系統(tǒng)鏡像的倉庫稱為 Ubuntu 倉庫,其中可能包括 14.04、12.04 等不同版本的鏡像。
根據(jù)所存儲的鏡像公開分享與否,Docker 倉庫可以分為公開倉庫 (public) 和私有倉庫 (private) 兩種形式。
目前,最大的公開倉庫是官方提供的 Docker Hub,其中存放了數(shù)量龐大的鏡像供用戶下載。國內(nèi)不少云服務(wù)提供商 (如時速云、阿里云等) 也提供了倉庫的本地源,可以提供穩(wěn)定的國內(nèi)訪問。
當然,用戶如果不希望公開分享自己的鏡像文件,Docker 也支持用戶在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個只能自己訪問的私有倉庫。當用戶創(chuàng)建了自己的鏡像之后就可以使用 push 命令將它上傳到指定的公有或者私有倉庫。這樣用戶下次在另外一臺機器上使用該鏡像時,只需要將其從倉庫上 pull 下來就可以了。
鏡像、容器、倉庫的區(qū)別
-
docker 鏡像(Images)
一個只讀模板,可以用來創(chuàng)建容器,一個鏡像可以創(chuàng)建多個容器;
Docker 提供了一個很簡單的機制來創(chuàng)建和更新現(xiàn)有的鏡像,甚至可以直接從其他人那里獲取做好的鏡像直接使用;
可以理解為 Java 中的類;
-
docker 容器(Container)
容器是從鏡像創(chuàng)建的運行實例,也就是鏡像啟動后的一個實例稱為容器,是獨立運行的一個或一組應(yīng)用;
Docker 利用容器來運行應(yīng)用,他可以被啟動、開始、停止、刪除,每個容器都是相互隔離的、保證安全的平臺;
可以把容器看做是一個簡易版的 Linux(包括 root 用戶權(quán)限、進程空間、用戶空間和網(wǎng)絡(luò)空間等)和運行在其中的應(yīng)用程序;
可以理解為 Java 中通過類創(chuàng)建的實例;
-
docker 倉庫(Resoisitory)
倉庫是集中存放鏡像文件的場所,類似 git 代碼倉庫等;
倉庫(Respository)和倉庫注冊服務(wù)器(Registry)是有區(qū)別的。倉庫注冊服務(wù)器一般存放多個倉庫,每個倉庫又有多個鏡像,每個鏡像又有不同的標簽 tag;
倉庫分為公開倉庫(public)和私有倉庫(private)兩種形式;
最大的公開倉庫是 Docker Hub,國內(nèi)的公開倉庫有阿里云等;
可以在本地網(wǎng)絡(luò)創(chuàng)建一個私有倉庫;
當創(chuàng)建好自己的鏡像后,可以通過 push 命令把它上傳到公開或私有倉庫;
倉庫的概念類似 Git,倉庫注冊服務(wù)器可以理解為 github 這種托管服務(wù);
-
docker 主機(Host)
一個物理或虛擬的機器用來執(zhí)行 Docker 守護進程和容器。
-
docker客戶端(Client)
客戶端通過命令行或其他工具使用 Docker。
推薦學(xué)習(xí):《docker視頻教程》