面向系統管理員的容器手冊
現在人們嚴重過度使用了“容器”這個術語。另外,對不同的人來說,它可能會有不同的含義,這取決於上下文。 |
傳統的 Linux 容器只是系統上普通的程式。一組程式與另外一組程式是相互隔離的,實現方法包括:資源限制(控制組 [cgoups])、Linux 安全限制(檔案許可權,基於 Capability 的安全模組、SELinux、AppArmor、seccomp 等)還有名字空間(程式 ID、網路、掛載等)。
如果你啟動一臺現代 Linux 作業系統,使用 cat /proc/PID/cgroup 命令就可以看到該程式是屬於一個控制組的。還可以從 /proc/PID/status 檔案中檢視程式的 Capability 資訊,從 /proc/self/attr/current 檔案中檢視程式的 SELinux 標籤資訊,從 /proc/PID/ns 目錄下的檔案檢視程式所屬的名字空間。因此,如果把容器定義為帶有資源限制、Linux 安全限制和名字空間的程式,那麼按照這個定義,Linux 作業系統上的每一個程式都在一個容器裡。因此我們常說 Linux 就是容器,容器就是 Linux。而容器執行時是這樣一種工具,它調整上述資源限制、安全限制和名字空間,並啟動容器。
Docker 引入了容器映象的概念,映象是一個普通的 TAR 包檔案,包含了:
rootfs(容器的根檔案系統):一個目錄,看起來像是作業系統的普通根目錄(/),例如,一個包含 /usr, /var, /home 等的目錄。
JSON 檔案(容器的配置):定義瞭如何執行 rootfs;例如,當容器啟動的時候要在 rootfs 裡執行什麼命令(CMD)或者入口(ENTRYPOINT),給容器定義什麼樣的環境變數(ENV),容器的工作目錄(WORKDIR)是哪個,以及其他一些設定。
Docker 把 rootfs 和 JSON 配置檔案打包成基礎映象。你可以在這個基礎之上,給 rootfs 安裝更多東西,建立新的 JSON 配置檔案,然後把相對於原始映象的不同內容打包到新的映象。這種方法建立出來的是分層的映象。
開放容器計劃Open Container Initiative(OCI)標準組織最終把容器映象的格式標準化了,也就是 映象規範OCI Image Specification(OCI)。
用來建立容器映象的工具被稱為容器映象構建器。有時候容器引擎做這件事情,不過可以用一些獨立的工具來構建容器映象。
Docker 把這些容器映象(tar 包)託管到 web 服務中,並開發了一種協議來支援從 web 拉取映象,這個 web 服務就叫容器倉庫container registry。
容器引擎是能從映象倉庫拉取映象並裝載到容器儲存上的程式。容器引擎還能啟動容器執行時(見下圖)。
容器儲存一般是寫入時複製copy-on-write(COW)的分層檔案系統。從容器倉庫拉取一個映象時,其中的 rootfs 首先被解壓到磁碟。如果這個映象是多層的,那麼每一層都會被下載到 COW 檔案系統的不同分層。 COW 檔案系統保證了映象的每一層獨立儲存,這最大化了多個分層映象之間的檔案共享程度。容器引擎通常支援多種容器儲存型別,包括 overlay、devicemapper、btrfs、aufs 和 zfs。
容器引擎將容器映象下載到容器儲存中之後,需要建立一份容器執行時配置,這份配置是使用者/呼叫者的輸入和映象配置的合併。例如,容器的呼叫者可能會調整安全設定,新增額外的環境變數或者掛載一些捲到容器中。
容器執行時配置的格式,和解壓出來的 rootfs 也都被開放容器計劃 OCI 標準組織做了標準化,稱為 OCI 執行時規範。
最終,容器引擎啟動了一個容器執行時來讀取執行時配置,修改 Linux 控制組、安全限制和名字空間,並執行容器命令來建立容器的 PID 1 程式。至此,容器引擎已經可以把容器的標準輸入/標準輸出轉給呼叫方,並控制容器了(例如,stop、start、attach)。
值得一提的是,現在出現了很多新的容器執行時,它們使用 Linux 的不同特性來隔離容器。可以使用 KVM 技術來隔離容器(想想迷你虛擬機器),或者使用其他虛擬機器監視器策略(例如攔截所有從容器內的程式發起的系統呼叫)。既然我們有了標準的執行時規範,這些工具都能被相同的容器引擎來啟動。即使在 Windows 系統下,也可以使用 OCI 執行時規範來啟動 Windows 容器。
容器編排器是一個更高層次的概念。它是在多個不同的節點上協調容器執行的工具。容器編排工具通過和容器引擎的通訊來管理容器。編排器控制容器引擎做容器的啟動和容器間的網路連線,它能夠監控容器,在負載變高的時候進行容器擴容。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2218841/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HP-UX系統管理員手冊UX
- 面向系統管理員的 Bash 指南
- AIX系統操作員手冊AI
- 面向 DBA 和系統管理員的技術文章
- Linux 管理員手冊(1)--Linux系統概述(轉)Linux
- GOLDENGATE管理員手冊Go
- Database Firewall管理員手冊Database
- Oracle SecureBackup管理員手冊Oracle
- GlusterFS系統中文管理手冊
- GOLDENGATE管理員手冊總結Go
- Database Firewall管理員手冊總結Database
- Oracle GoldenGate OGG管理員手冊OracleGo
- 標籤安全管理員手冊總結
- Linux網路管理員手冊 (轉)Linux
- Linux 管理員手冊(4)--記憶體管理(轉)Linux記憶體
- Linux 管理員手冊(8)--備份(轉)Linux
- Linux網路管理員手冊(1) (轉)Linux
- 員工管理系統
- 中文《linux 新手管理員手冊》下載(轉)Linux
- Linux 管理員手冊(9)--Keeping Time(轉)Linux
- Solaris管理員常用命令簡明手冊
- Linux 管理員手冊(7)--管理使用者帳戶(轉)Linux
- 資料庫管理員必讀的十本技術手冊資料庫
- Linux 管理員手冊(2)--目錄樹概述(轉)Linux
- Linux 管理員手冊(6)--登入和登出(轉)Linux
- LCM產品管理員操作手冊讀後感
- 面向 Web 前端的原生語言總結手冊Web前端
- Win10系統提示“工作管理員已被系統管理員停用”怎麼辦Win10
- Solaris管理員常用168條命令簡明手冊(轉)
- Linux 管理員手冊(5)--引導和關機(轉)Linux
- Linux網路管理員手冊(目錄) 協議 (轉)Linux協議
- 時間管理--給系統管理員1
- 系統管理員資源大全
- ASM管理手冊ASM
- PostgreSQL學習手冊(系統表)SQL
- windows10系統下注冊表編輯被管理員禁用怎麼辦Windows
- 論系統管理員的傲慢與偏見
- 創新公司員工的資訊管理系統