您的位置:首頁>正文

容器技術概述

更多騰訊海量技術文章, 請關注雲加社區:https://cloud.tencent.com/developer

容器是一個允許我們在資源隔離的過程中, 運行應用程式和其依賴項的 、輕量的 、作業系統級別的虛擬化技術, 運行應用程式所需的所有必要元件都打包為單個鏡像, 這個鏡像是可以重複使用的。 當鏡像運行時, 它是運行在獨立的環境中, 並不會和其他的應用共用 主機作業系統 的 記憶體, CPU 或 磁片 。 這保證了容器內的進程不會影響到容器外的任何進程。

01-os-virtualization.jpg

虛擬機器和容器之間的區別

虛擬機器通常包括整個作業系統和應用程式。 還需要與他們一起運行的虛擬機器管理程式來控制虛擬機器。

因為它們包括作業系統, 因此它們的大小是幾千百萬位元組( 1千百萬位元組= 1GB)。 使用虛擬機器的一個缺點是它們需要幾分鐘的時間才能啟動作業系統, 和初始化它們託管的應用程式。 另一方面, 容器則是羽量級的,

大部分是百萬位元組(1百萬位元組 = 1MB)大小的。 容器的性能與虛擬機器相比較, 容器性能更好, 可以立即啟動。

02-windows-server-virtual-machines-vs-containers

容器解決什麼問題?

當應用程式計算環境發生變化時, 許多問題都會出現。 有可能是開發人員將代碼從開發環境推送到測試環境, 然後再繼續。

例如:開發人員在Windows中編寫應用程式碼, 但上層環境(測試, 階段或產品)是基於Linux的。 在這種情況下, 當作業系統發生變化時, 某些功能可能會停止工作。 所以, 基本上, 當配套的軟體環境不一樣的時候, 間歇性故障的幾率會更高。

正如 Docker 的發明者 Solomon Hykes 所說:“你使用 Python 2.7 進行測試, 然後在生產環境中運行 Python 3, 可能會發生一些奇怪的事情。 或者你會依賴某個版本的一個 SSL 庫, 但是裝了另外版本的 SSL 庫。 你在 Debian 上進行你的測試, 生產環境是在 RedHat 上, 可能發生各種奇怪的事情。

這種變化可能不僅是計算環境, 也可能是網路的變化。 Hykes 還補充說:“網路拓撲結構可能不同, 或者安全性原則和存儲可能不同, 但是軟體必須在其上運行。

容器的優點

1.敏捷環境:容器技術的最大優勢是比創建 VM (虛擬機器)實例更快的速度。

它們的輕量化在性能和佔用空間方面的開銷更小。

2.提高生產力:容器通過消除跨服務依賴性和衝突來提高開發人員的生產力。 每個容器都可以被看作是一個不同的微服務, 因此可以獨立升級, 而不需要考慮它們的同步。

3.版本控制:容器的每個鏡像都可以進行版本控制, 因此可以跟蹤不同版本的容器, 注意版本之間的差異等。

4.計算環境可攜性:容器封裝了運行應用程式所必需的所有相關細節, 如應用程式依賴性和作業系統。 這有助於簡化容器鏡像從一個環境到另一個環境的可攜性。 例如, 可以使用相同的鏡像在 Windows / Linux 或 dev (生產) / test(測試) / stage (階段)環境中運行。

5.標準化:大多數容器基於開放標準,

可以運行在所有主要的 Linux 發行版本, 微軟等。

6.安全:容器將一個容器的進程與另一個容器以及底層基礎架構隔離開來。 因此, 一個容器中的任何升級或更改都不會影響另一個容器。

容器的缺點

1.複雜性增加:使用 n 個容器運行一個應用程式, 複雜性因素也隨之增加。 在生產環境中管理這麼多的容器將是一項具有挑戰性的任務。 像 Kubernetes 和 Mesos 這樣的工具可以用來管理n個容器。

2.本機Linux支持:大多數容器技術(如 Docker )都基於 Linux 容器(LXC)。 因此, 與在 Linux 上原生地運行這些實例相比, 在微軟環境下運行這些容器就顯得有點麻煩了, 它們的日常使用會帶來複雜的問題。

3.不成熟:容器技術在市場上相對較新, 因此上市時間較慢。 開發人員可用資源的數量是有限的, 如果遇到一些問題,可能需要一些時間才能找出解決方案。

容器的分類

作業系統容器:根據維琪百科,“作業系統級虛擬化是一種電腦虛擬化方法,其中作業系統的內核允許存在多個獨立的使用者空間實例,而不僅僅是一個,這種實例有時稱為容器,虛擬化引擎( VEs)或監獄( jails )( FreeBSD jail或 chroot jail ),從運行程式的角度來看,它們可能看起來就像真正的電腦。

如上所述,它們共用主機作業系統的內核,但提供用戶空間隔離。不同的應用程式可以安裝,配置,並可以運行,就像我們在主機作業系統上運行應用程式一樣。同樣,分配給容器的資源只對該容器可見。任何其他外來作業系統鏡像將無法訪問另一外來作業系統的資源。

當需要配置一組具有相同配置的作業系統時,它們非常有用。因此,它有助於創建範本,這可以用來創建與另一個作業系統類似的風格。

要創建OS(作業系統)容器,我們可以利用容器技術,如 LXC , OpenVZ , Docker , Linux VServer , BSD Jails 和 Solaris zones 。

03-os-vs-app-containers.jpg

應用程式容器:根據維琪百科,“應用程式虛擬化是一種軟體技術,它將電腦程式從其執行的底層作業系統中進行封裝。完全虛擬化的應用程式並不是按照傳統的意義來安裝的,儘管它仍然像以前一樣被執行。應用程式在運行時表現得像是直接與原始作業系統及其管理的所有資源進行交互,但可以在不同程度上進行隔離或 sandboxed (沙箱)處理。

在這種情況下,術語“虛擬化”是指被封裝的工件(應用程式),它與硬體虛擬化中的含義完全不同,它指的是被抽象的物件(物理硬體)。

應用程式容器被設計為將服務作為單個進程打包和運行,而在 OS 容器中,可以運行多個服務和進程。

像 Docker 和 Rocket 這樣的容器技術就是應用程式容器的例子。

翻譯人:神話_Tyrannosaurus,該成員來自雲+社區翻譯社

原文連結:https://dzone.com/articles/container-technologies-overview

原文作者:Jatin Aneja

如果遇到一些問題,可能需要一些時間才能找出解決方案。

容器的分類

作業系統容器:根據維琪百科,“作業系統級虛擬化是一種電腦虛擬化方法,其中作業系統的內核允許存在多個獨立的使用者空間實例,而不僅僅是一個,這種實例有時稱為容器,虛擬化引擎( VEs)或監獄( jails )( FreeBSD jail或 chroot jail ),從運行程式的角度來看,它們可能看起來就像真正的電腦。

如上所述,它們共用主機作業系統的內核,但提供用戶空間隔離。不同的應用程式可以安裝,配置,並可以運行,就像我們在主機作業系統上運行應用程式一樣。同樣,分配給容器的資源只對該容器可見。任何其他外來作業系統鏡像將無法訪問另一外來作業系統的資源。

當需要配置一組具有相同配置的作業系統時,它們非常有用。因此,它有助於創建範本,這可以用來創建與另一個作業系統類似的風格。

要創建OS(作業系統)容器,我們可以利用容器技術,如 LXC , OpenVZ , Docker , Linux VServer , BSD Jails 和 Solaris zones 。

03-os-vs-app-containers.jpg

應用程式容器:根據維琪百科,“應用程式虛擬化是一種軟體技術,它將電腦程式從其執行的底層作業系統中進行封裝。完全虛擬化的應用程式並不是按照傳統的意義來安裝的,儘管它仍然像以前一樣被執行。應用程式在運行時表現得像是直接與原始作業系統及其管理的所有資源進行交互,但可以在不同程度上進行隔離或 sandboxed (沙箱)處理。

在這種情況下,術語“虛擬化”是指被封裝的工件(應用程式),它與硬體虛擬化中的含義完全不同,它指的是被抽象的物件(物理硬體)。

應用程式容器被設計為將服務作為單個進程打包和運行,而在 OS 容器中,可以運行多個服務和進程。

像 Docker 和 Rocket 這樣的容器技術就是應用程式容器的例子。

翻譯人:神話_Tyrannosaurus,該成員來自雲+社區翻譯社

原文連結:https://dzone.com/articles/container-technologies-overview

原文作者:Jatin Aneja

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示