Docker (3)核心概念
1. C/S架構
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。
2 核心模塊
| Docker 鏡像(Images) | Docker 鏡像是用于創建 Docker 容器的模板,比如 Ubuntu 系統。 | 
| Docker 容器 | (Container)容器是獨立運行的一個或一組應用,是鏡像運行時的實體。 | 
| Docker 客戶端(Client) | Docker 客戶端通過命令行或者其他工具使用 | 
| Docker SDK | (https://docs.docker.com/develop/sdk/) 與 Docker 的守護進程通信。 | 
| Docker 主機(Host) | 一個物理或者虛擬的機器用于執行 Docker 守護進程和容器。 | 
| Docker Registry | Docker 倉庫用來保存鏡像,可以理解為代碼控制中的代碼倉庫。Docker Hub(https://hub.docker.com)提供了龐大的鏡像集合供使用。一個 Docker Registry 中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像。通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽就常用于對應該軟件的各個版本。我們可以通過 <倉庫名>:<標簽> 的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以 latest 作為默認標簽。 | 
| Docker Machine | Docker Machine是一個簡化Docker安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 | 
2.1 核心概念
-  鏡像(Image) 
 Docker 鏡像(Image),就相當于是一個 root 文件系統。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統的 root 文件系統。
-  容器(Container) 
 鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。
-  倉庫(Repository) 
 倉庫可看成一個代碼控制中心,用來保存鏡像。Docker 倉庫可以分為公開倉庫( Public )和私有倉庫( Private)兩種形式。 eg. 最大的公開倉庫是官方提供的 Docker Hub ,其中存放著數量龐大的鏡像供用戶下載。
-  倉庫注冊服務器 
 存放倉庫的地方,其上往往存放著多個倉庫。 每個倉庫集中存放某一類鏡像,往往包括多個鏡像文件,通過不同的標簽( tag)來進行區分。
-  Docker 鏡像 
 是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。
 
 2.2 分層存儲
Docker充分利用 Union FS 的技術,將其設計為分層存儲的架構。
- 鏡像包含操作系統完整的 root 文件系統,其體積往往很大。
- 嚴格來說,鏡像并非是像一個 ISO 那樣的打包文件,鏡像只是一個虛擬的概念,其實際體現并非由一個文件組成,而是由一組文件系統組成,或者說,由多層文件系統聯合組成。
- 鏡像構建時,會一層層構建,前一層是后一層的基礎。每一層構建完就不會再發生改變,后一層上的任何改變只發生在自己這一層。比如,刪除前一層文件的操作,實際不是真的刪除前一層的文件,而是僅在當前層標記為該文件已刪除。在最終容器運行的時候,雖然不會看到這個文件,但是實際上該文件會一直跟隨鏡像。
- 在構建鏡像的時候,需要額外小心,每一層盡量只包含該層需要添加的東西,任何額外的東西應該在該層構建結束前清理掉。
分層存儲的特征還使得鏡像的復用、定制變的更為容易。甚至可以用之前構建好的鏡像作為基礎層,然后進一步添加新的層,以定制自己所需的內容,構建新的鏡像。
總結
以上是生活随笔為你收集整理的Docker (3)核心概念的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Docker (2)与虚拟机的比较
- 下一篇: (chap4 IP协议) IP协议
