Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别
Docker 簡介
Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,每個容器內運行一個應用,不同的容器相互隔離,容器之間不會有任何接口(類似 iPhone 的 app),容器之間也可以建立通信機制。更重要的是容器性能開銷極低。容器的創建和停止都十分快速,容器自身對資源的需求也十分有限。
Docker 引擎的基礎是 Linux 容器(Linux Containers, LXC)技術。
Docker 容器與虛擬機比較
Docker 和常見的虛擬機的差異
Docker 基礎概念
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 入门系列(1)- 初识容器,镜像、容器、仓库的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017 年已读书单总结
- 下一篇: Ubuntu 16.04 安装 Dock