容器化&Docker

下圖就是Docker容器模型:
Docker容器
我們先了解下幾個關鍵的定義:
什麼是容器化
容器化是軟件開發的一種方法,通過該方法可將應用程序或服務、其依賴項及其配置(抽象化爲部署清單文件)一起打包爲容器映像。 容器化應用程序可以作爲一個單元進行測試,並可以作爲容器映像實例部署到主機操作系統 (OS)。
我們可以將微信小程序理解爲一個容器化應用程序(類似於上圖中的App1、App2、App3)。微信本身相當於是運行的OS上的Docker主機(類似於上圖中的Container Engine)。
什麼是Docker
Docker就是一個實現軟件容器化開發&部署的開源項目,用於將應用程序自動部署爲可在雲或本地運行的便攜式獨立容器(上圖裝載App的各個"箱子"),也是一家公司的名字。

其他有關Docker的專業術語

容器映像:包含創建容器所需的所有依賴項和信息的包。 映像包括所有依賴項(例如框架),以及容器運行時使用的部署和執行配置。 通常情況下,映像派生自多個基礎映像,這些基礎映像是堆疊在一起形成容器文件系統的層。 創建後,映像不可變。
Dockerfile:包含有關如何生成 Docker 映像的說明的文本文件。 與批處理腳本相似,首先第一行將介紹基礎映像,然後是關於安裝所需程序、複製文件等操作的說明,直至獲取所需的工作環境。
生成:基於其 Dockerfile 提供的信息和上下文生成容器映像的操作,以及生成映像的文件夾中的其他文件。 可以使用 Docker 的 docker build 命令生成映像。
容器:Docker 映像的實例。 容器表示單個應用程序、進程或服務的執行。 它由 Docker 映像的內容、執行環境和一組標準指令組成。 在縮放服務時,可以從相同的映像創建多個容器實例。 或者,批處理作業可以從同一個映像創建多個容器,向每個實例傳遞不同的參數。
**卷:**提供一個容器可以使用的可寫文件系統。 由於映像只可讀取,而多數程序需要寫入到文件系統,因此卷在容器映像頂部添加了一個可寫層,這樣程序就可以訪問可寫文件系統。 程序並不知道它正在訪問的是分層文件系統,此文件系統就是往常的文件系統。 卷位於主機系統中,由 Docker 管理。
標記:可以應用於映像的標記或標籤,以便可以識別同一映像的不同映像或版本(具體取決於版本號或目標環境)。
多階段生成:Docker 17.05 或更高版本的一個功能,可幫助減小最終映像的大小。 概括來說,藉助多階段生成,可以使用一個包含 SDK 的大型基礎映像(以此爲例)編譯和發佈應用程序,然後使用發佈文件夾和一個小型僅運行時基礎映像生成一個更小的最終映像
存儲庫 (repo):相關的 Docker 映像集合,帶有指示映像版本的標記。 某些存儲庫包含特定映像的多個變量,例如包含 SDK(較重)的映像,包含唯一運行時(較輕)的映像,等等。這些變量可以使用標記進行標記。 單個存儲庫中可包含平臺變量,如 Linux 映像和 Windows 映像。
註冊表:提供存儲庫訪問權限的服務。 大多數公共映像的默認註冊表是Docker Hub(歸作爲組織的 Docker 所有)。 註冊表通常包含來自多個團隊的存儲庫。 公司通常使用私有註冊表來存儲和管理其創建的映像。 另一個示例是 Azure 容器註冊表。

附圖:在VS2017 中開發Docker項目:
VS2017中開發Docker項目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章