區別:1、容器是從鏡像創建的運行實例,鏡像啟動後的一個實例稱為容器,是獨立運行的一個或一組應用;2、倉庫是集中存放鏡像文件的場所,倉庫註冊伺服器一般存放多個倉庫,每個倉庫有多個鏡像,每個鏡像有不同的標籤。
本教學操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵循Apache2.0協定開源。
Docker 可以讓開發者打包他們的應用程式以及依賴套件到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,每個容器內運行一個應用,不同的容器相互隔離,容器之間不會有任何接口(類似iPhone 的app),容器之間也可以建立通信機制。更重要的是容器效能開銷極低。容器的創建和停止都十分快速,容器本身對資源的需求也十分有限。
Docker 引擎的基礎是 Linux 容器(Linux Containers, LXC)技術。
Docker 映像
Docker映像(Image)類似於虛擬機器映像,可以將它理解為一個面向 Docker 引擎的唯讀的範本。包含了檔案系統。
例如:一個映像可以只包含一個完整的 Ubuntu 作業系統環境,可以稱它為一個 Ubuntu 映像。鏡像裡面僅安裝了 Apache 應用程式(或使用者需要的其他軟體)。可以稱它為一個 Apache 鏡像。
映像是建立 Docker 容器的基礎。透過版本管理和增量的檔案系統,Docker 提供了一套十分簡單的機制來建立和更新現有的映像,使用者甚至可以從網路上下載一個已經做好的應用程式鏡像,並直接使用。
Docker 容器
Docker容器(Container)類似於一個輕量級的沙箱,Docker 利用容器來運作和隔離應用。
容器是從鏡像建立的應用程式運行實例。可以啟動、開始、停止、刪除,而這些容器都是彼此相互隔離的、不可見的。
可以把容器看做是一個簡易版的 Linux 系統環境 (包括 root 使用者權限、行程空間、使用者空間和網路空間等) 以及運行在其中的應用程式打包而成的盒子。
鏡像本身是唯讀的。容器從鏡像啟動的時候,會在鏡像的最上層創建一個可寫層。
Docker 倉庫
Docker倉庫(Repository)類似於程式碼倉庫,它是 Docker 集中存放映像檔的場所。
有時會看到有資料將 Docker 倉庫和倉庫註冊伺服器 (Registry) 混為一談,並且不嚴格區分。實際上,倉庫註冊伺服器是存放倉庫的地方,其上往往存放多個倉庫。每個倉庫集中存放某一類鏡像,往往包括多個鏡像文件,透過不同的標籤 (tag) 來進行區分。
例如存放 Ubuntu 作業系統映像的倉庫稱為 Ubuntu 倉庫,其中可能包括 14.04、12.04 等不同版本的映像。
根據所儲存的映像公開分享與否,Docker 倉庫可以分為公開倉庫 (Public) 和私有倉庫 (Private) 兩種形式。
目前,最大的公開倉庫是官方提供的 Docker Hub,其中存放了數量龐大的映像供用戶下載。國內不少雲端服務供應商 (如時速雲端、阿里雲等) 也提供了倉庫的本地來源,可以提供穩定的國內存取。
當然,使用者如果不希望公開分享自己的映像文件,Docker 也支援使用者在本地網路內建立一個只能自己存取的私有倉庫。當使用者建立了自己的鏡像之後就可以使用 push 指令將它上傳到指定的公有或私有倉庫。這樣使用者下次在另外一台機器上使用該鏡像時,只需要將其從倉庫上 pull 下來就可以了。
映像、容器、倉庫的差異
#docker 映像(Images)
一個只讀取模板,可以用來建立容器,一個映像可以建立多個容器;
Docker 提供了一個很簡單的機制來建立和更新現有的映像,甚至可以直接從其他人那裡獲取做好的映像直接使用;
可以理解為Java 中的類別;
docker 容器(Container)
容器是從映像建立的運行實例,也就是映像啟動後的實例稱為容器,是獨立運作的一個或一組應用;
Docker 利用容器來運作應用,他可以被啟動、開始、停止、刪除,每個容器都是相互隔離的、確保安全的平台;
可以把容器看做是一個簡易版的Linux(包括root 使用者權限、進程空間、使用者空間和網路空間等)和運行在其中的應用程式;
可以理解為Java 中透過類別建立的實例;
docker 倉庫(Resoisitory)
倉庫是集中存放映像檔的場所,類似git 代碼倉庫等;
倉庫(Respository)和倉庫註冊伺服器(Registry)是有區別的。倉庫註冊伺服器一般存放多個倉庫,每個倉庫有多個鏡像,每個鏡像又有不同的標籤tag;
倉庫分為公開倉庫(public)和私有倉庫(private)兩種形式;
最大的公開倉庫是Docker Hub,國內的公開倉庫有阿里雲等;
可以在本地網路創建一個私有倉庫;
當創建好自己的鏡像後,可以透過push 指令把它上傳到公開或私有倉庫;
倉庫的概念類似Git,倉庫註冊伺服器可以理解為GitHub 這種託管服務;
docker 主機(Host)
一個實體或虛擬的機器用來執行Docker 守護程式和容器。
docker客戶端(Client)
#客戶端透過命令列或其他工具使用 Docker。
推薦學習:《docker影片教學》
以上是docker容器和倉庫的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!