Home >> Blog >> 什麼是容器 containers 好用在哪?

什麼是容器 containers 好用在哪?

容器是解決如何讓軟體在從一個計算環境轉移到另一個計算環境時可靠運行的問題的解決方案。以下是您需要了解的有關這項流行技術的資訊。

Docker於 2013 年爆發,從那時起它就在 IT 界引起了轟動。

Docker 提供的應用程式容器技術有望改變 IT 運營的方式,就像幾年前虛擬化技術所做的那樣。

以下是與該技術相關的 13 個最常見問題的答案。

什麼是容器,為什麼需要它們?

容器是解決如何讓軟體在從一個計算環境轉移到另一個計算環境時可靠運行的問題的解決方案。這可能是從開發人員的筆記本電腦到測試環境,從暫存環境到生產環境,也可能是從數據中心的物理機到私有或公共雲端中的虛擬機。如果你是SEO開發人員一定對容器不陌生。

Docker 創建者 Solomon Hykes 說,當支持的軟體環境不相同時,就會出現問題。“你將使用 Python 2.7 進行測試,然後它將在生產環境中的 Python 3 上運行,並且會發生一些奇怪的事情。或者,您將依賴某個版本的 SSL 庫的行為,然後安裝另一個。你將在 Debian 上運行測試,在 Red Hat 上進行生產,各種奇怪的事情都會發生。”

他補充說,可能導致問題的不僅僅是不同的軟體。“網絡拓撲可能不同,或者安全策略和存儲可能不同,但軟體必須在其上運行。”

容器如何解決這個問題?

簡而言之,一個容器由一個完整的運行時環境組成:一個應用程式,加上它的所有依賴項、庫和其他二進製文件,以及運行它所需的配置文件,捆綁到一個包中。通過容器化應用程式平台及其依賴項,操作系統分佈和底層基礎設施的差異被抽像出來。

容器和虛擬化有什麼區別?

使用虛擬化技術,可以傳遞的包是虛擬機,它包括整個操作系統和應用程式。運行三個虛擬機的物理伺服器將有一個管理程式和三個獨立的操作系統在其上運行。

相比之下,使用 Docker 運行三個容器化應用程式的伺服器運行一個操作系統,每個容器與其他容器共享操作系統內核。操作系統的共享部分是只讀的,而每個容器都有自己的掛載(即訪問容器的方式)用於寫入。這意味著容器比虛擬機更輕量級並且使用更少的資源。

容器還有哪些其他好處?

一個容器的大小可能只有幾十兆字節,而擁有自己整個操作系統的虛擬機大小可能只有幾千兆字節。因此,單個伺服器可以託管比虛擬機更多的容器。

另一個主要好處是虛擬機可能需要幾分鐘來啟動它們的操作系統並開始運行它們託管的應用程式,而容器化應用程式幾乎可以立即啟動。這意味著容器可以在需要時以“及時”的方式實例化,並在不再需要時消失,從而釋放主機上的資源。

第三個好處是容器化允許更大的模塊化。與其在單個容器中運行整個複雜的應用程式,不如將應用程式拆分為模塊(例如資料庫、應用程式前端等)。這就是所謂的微服務方法。以這種方式構建的應用程式更易於管理,因為每個模塊都相對簡單,並且可以對模塊進行更改而無需重新構建整個應用程式。因為容器是如此輕量級,所以單個模塊(或微服務)只有在需要時才可以實例化,並且幾乎可以立即使用。

Docker 和容器有什麼區別?

Docker 已成為容器技術的代名詞,因為它在普及它方面最為成功。但容器技術並不新鮮。它已經以LXC的形式內置在 Linux 中已有 10 多年了,FreeBSD jails、AIX Workload Partitions 和 Solaris Containers 也提供了類似的操作系統級虛擬化。

有標準的容器格式嗎?

早在 2015 年,一家名為 CoreOS 的公司就製作了自己的 App Container Image (ACI) 規範,該規範不同於 Docker 的容器規範,當時新流行的容器運動有可能與競爭對手的 Linux 容器格式分崩離析。

但在同年晚些時候,一項名為“開放容器項目”的倡議的倡議被宣布,後來更名為 Open Container Initiative (OCI)。在 Linux 基金會的主持下運行,OCI 的目的是為所有平台的容器格式和容器運行時軟體開發行業標準。OCP 標準的起點是 Docker 技術,Docker 將其代碼庫的大約 5% 捐贈給了該項目以使其啟動。

該項目的贊助商包括 AWS、Google、IBM、HP、Microsoft、VMware、Red Hat、Oracle、Twitter 和 HP 以及 Docker 和 CoreOS

為什麼所有這些公司都參與了開放容器計劃?

OCI 的想法是確保容器技術的基本構建塊(例如容器格式)是標準化的,以便每個人都可以利用它們。

這意味著組織可以專注於開發支持在企業或雲端環境中使用標準化容器所需的附加軟體,而不是花費資源開發競爭性容器技術。所需的軟體類型包括容器編排和管理系統以及容器安全系統。

有沒有免費的開源容器管理系統?

是的。最著名和使用最廣泛的免費和開源容器管理系統可能是Kubernetes,它是一個源自 Google 的軟體項目。Kubernetes 提供了用於部署、維護和擴展容器化應用程式的機制

當今存在哪些商業容器管理解決方案?

Docker 企業版可能是最著名的商業容器管理解決方案。它為在企業 Linux 或 Windows 操作系統和雲端提供商上運行的應用程式提供了一個經過測試和認證的集成平台。

但是還有很多其他的,其中一些著名的有一層圍繞 Kubernetes 構建的專有軟體作為核心。此類管理軟體產品的示例包括:

  • CoreOS 的Tectonic預打包了構建 Google 風格的基礎架構所需的所有開源組件,並添加了其他商業功能,例如管理控制台、企業 SSO 集成和Quay,一個企業級容器註冊表。
  • Red Hat 的Open Shift Container Platform 是一個本地私有平台即服務產品,圍繞由 Docker 提供支持的應用程式容器核心構建,並在 Red Hat Enterprise Linux 的基礎上由 Kubernetes 提供編排和管理。
  • Rancher Labs 的Rancher是一個商業開源解決方案,旨在使在任何基礎設施上的生產環境中部署和管理容器變得容易。

容器有多安全?

許多人認為容器不如虛擬機安全,因為如果容器主機內核存在漏洞,它可以提供進入共享它的容器的途徑。對於虛擬機管理程式也是如此,但由於虛擬機管理程式提供的功能遠少於 Linux 內核(通常實現文件系統、網絡、應用程式進程控制等),因此它呈現出的攻擊面要小得多。

但是在過去的幾年中,人們投入了大量精力來開發軟體以增強容器的安全性。

例如,Docker(和其他容器系統)現在包括一個簽名基礎設施,允許管理員對容器鏡像進行簽名,以防止部署不受信任的容器。

但是,受信任的簽名容器不一定可以安全運行,因為容器中的某些軟體在簽名後可能會發現漏洞。出於這個原因,Docker 和其他公司提供容器安全掃描解決方案,如果任何容器鏡像存在可被利用的漏洞,可以通知管理員。

還開發了更專業的容器安全軟體。例如,Twistlock提供的軟體可以分析容器的預期行為和“白名單”進程、網絡活動(例如源和目標 IP 地址和端口)甚至某些存儲實踐,以便可以標記任何惡意或意外行為。

另一家名為Polyverse的專業容器安全公司採取了不同的方法。它利用容器可以在幾分之一秒內啟動的事實,每隔幾秒以已知的良好狀態重新啟動容器化應用程式,以最大限度地減少黑客利用容器中運行的應用程式的時間。

哪些 Linux 發行版適合用作容器主機?

如果大多數 Linux 發行版的預期用途只是充當容器主機來運行容器,那麼它們的功能就沒有必要了。出於這個原因,許多 Linux 發行版專為運行容器而設計。

一些例子包括:

  • Container Linux(前身為 CoreOS Linux)——最早為容器構建的輕量級容器操作系統之一
  • RancherOS — 一個由容器構建的簡化 Linux 發行版,專門用於運行容器。
  • Photon OS — 一個最小的 Linux 容器主機,經過優化以在 VMware 平台上運行。
  • Project Atomic Host——紅帽輕量級容器操作系統有基於CentOS和Fedora的版本,紅帽企業Linux也有下游企業版。
  • Ubuntu Core — 最小的 Ubuntu 版本,Ubuntu Core 被設計為物聯網設備和大規模雲容器部署的主機操作系統

如果您是 Windows 商店怎麼辦?

除了在任何運行 Linux 內核 3.10(或更高版本)的 Linux 發行版上運行之外,Docker 還可以在 Windows 上運行。

這是因為微軟在 2016 年推出了在 Windows Server 2016 和 Windows 10 中運行 Windows 容器的能力。這些是為 Windows 設計的 Docker 容器,可以從任何 Docker 客戶端或微軟的 PowerShell 進行管理。

(微軟還引入了 Hyper-V 容器,它們是在 Hyper-V 虛擬機中運行的 Windows 容器,用於增加隔離。)

Windows 容器可以部署在 Windows Server 2016 的標準安裝、簡化的 Server Core 安裝或專為在容器或虛擬機中運行應用程式而設計的Nano Server安裝選項上。

除了 Linux 和 Windows,Docker 還可以在流行的雲平台上運行,包括 Amazon EC2、Google Compute Engine、Microsoft Azure 和 Rackspace。

容器最終會取代成熟的伺服器虛擬化嗎?

由於許多重要原因,這在可預見的未來不太可能。

首先,人們仍然普遍認為虛擬機比容器提供更好的安全性,因為它們提供了更高的隔離級別。

其次,可用於編排大量容器的管理工具還不如用於管理虛擬化基礎架構的軟體全面,例如 VMware 的 vCenter 或 Microsoft 的 System Center。在此類軟體上進行了大量投資的公司不太可能在沒有充分理由的情況下放棄其虛擬化基礎架構。

也許更重要的是,虛擬化和容器也開始被視為互補技術,而不是相互競爭的技術。這是因為容器可以在輕量級虛擬機中運行以增加隔離性和安全性,並且因為硬體虛擬化可以更輕鬆地管理支持容器所需的硬體基礎設施(網絡、伺服器和存儲)。

VMware 鼓勵已投資於其虛擬機管理基礎架構的客戶在其 Photon OS 容器 Linux 發行版上的輕量級虛擬機內運行容器,然後可以從 vCenter 進行管理。這是 VMware 的“VM 中的容器”策略。

但 VMware 還引入了它所謂的 vSphere 集成容器 (VIC)。這些容器可以直接部署到獨立的 ESXi 主機,也可以像虛擬機一樣部署到 vCenter Server。這就是 VMware 的“容器即虛擬機”戰略。

這兩種方法都有其優點,但重要的是,與其替換虛擬機,不如在虛擬化基礎架構中使用容器通常很有用。