天天看點

【譯】LXC and LXD: Explaining Linux Containers

LXC和LXD是兩個重要的縮略詞,可以知道你是否裝入容器。 不幸的是,它們也是難以直接互相保持的縮略語。 他們聽起來很像。 它們指的是類似的平台,這些平台大部分是由同一家公司建立的。 而且他們在技術層面上彼此深深地交織在一起。

如果這聽起來令人困惑,那是因為它至少在開始時是這樣。 幸運的是,通過一些解釋,很容易了解LXC,LXD以及它們對于想要使用容器的管理者和開發人員的意義。

這篇文章解釋了LXC和LXD是什麼,它們之間有什麼不同,以及為什麼開發人員或管理者想要使用它們 - 或者,為什麼他們可能更喜歡堅持使用Docker或CoreO。

LXC

要了解LXD,您首先必須了解LXC。

LXC是“Linux容器”的簡稱,是Linux核心中作業系統級軟體虛拟化的解決方案。 與傳統的虛拟機管理程式(想想VMware,KVM和Hyper-V)不同,LXC允許您在虛拟環境中運作單個應用程式,但如果您願意,也可以在LXC容器内虛拟化整個作業系統。

LXC的主要優勢包括使用來自主機作業系統的使用者空間工具輕松控制虛拟環境,比傳統虛拟機管理程式需要更少的開銷,并通過将其分發到容器内來提高單個應用程式的可移植性。

如果您認為LXC聽起來很像Docker或CoreOS容器,那是因為LXC曾經是使Docker和CoreOS打勾的底層技術。 然而,最近,Docker走向了自己的方向,不再依賴于LXC。 CoreOS現在也使用Rocket(也稱為rkt,對于那些真正不喜歡打字的人)做自己的事情。 盡管如此,LXC幾年前還是集裝箱革命的起源,LXC原則 - 如果不是LXC代碼 - 仍然是集裝箱發展方式的核心。

LXD

定義LXD的最簡單方法是說它是LXC的擴充。 LXD也恰好是LXC的主要聲譽,因為LXC已經不再對Docker和CoreOS很重要。

定義LXD的更技術方法是将其描述為連接配接到libxlc(LXC軟體庫)的REST API。 LXD是用Go編寫的,它建立了一個系統守護程式,應用程式可以使用Unix套接字在本地通路,也可以通過HTTPS在網絡上通路。

LXD的主要賣點包括:

  • 主機可以僅使用單個系統守護程式運作許多LXC容器,這簡化了管理并減少了開銷。 使用純粹的LXC,您需要為每個容器分别進行處理。
  • LXD守護程式可以利用主機級安全功能來使容器更安全。 在簡單的LXC上,容器安全性更成問題。
  • 由于LXD守護程式處理網絡和資料存儲,并且使用者可以從LXD CLI界面控制這些内容,是以簡化了與容器共享這些資源的過程。
  • LXD提供LXC無法提供的進階功能,包括實時容器遷移和快照正在運作的容器的功能。

Canonical ,為Ubuntu GNU / Linux作業系統提供資金的公司(并非巧合,也是LXC的主要支援者),于2014年底推出了LXD。如果我在幾個月前寫這篇文章,我會說LXD還沒有為實際使用做好準備。

但最近發生了很多變化,LXD 2.0是第一個生産版本, 截止到2016年4月 。 現在,LXD終于可以用于生産級别的使用。

(你問LXD 1.0怎麼樣?沒有LXD 1.0。開發人員直接跳到LXD 2.0,因為它是與LXC 2.0并行釋出的。)

LXC和LXD

如果您是應用程式開發人員或資料中心管理者,您可能想知道上述所有方法對您的影響,以及您應該選擇哪種容器解決方案。

答案很複雜。 首先,要明白你不能在LXC和LXD之間做出選擇,因為它們不是截然不同的東西。 它們不是彼此的叉子或克隆。 LXD依賴于LXC。 它們都是由同一代程式員共同開發的。 是以,如果你使用LXD,你也會使用LXC,而且你總會這樣做。

是的,您可以在沒有LXD的情況下使用LXC。 但你可能不想這樣做。 就其本身而言,LXC将僅為您提供基本的功能子集。 對于生産環境,您将需要使用LXD。

LXC + LXD與Docker / CoreOS

你可能也想知道LXC + LXD組合是否比Docker或CoreOS更好。 答案取決于您的需求。

首先,請注意Canonical不打算将LXC + LXD替換為Docker。 相反, 正如LXD開發人員之一的StéphaneGraber所寫 ,LXD專為托管“通常會長時間運作并基于清晰的分發圖像”的虛拟環境而設計,而“Docker專注于短暫的,無狀态的,最小的容器,赢得了'通常會更新或重新配置,而隻是完全替換。“

這意味着在選擇LXD或Docker(或CoreOS,在這方面類似于Docker)之前,您應該考慮必須管理的部署類型。 您是否會根據通用應用程式圖像快速啟動大量容器? 如果是這樣,請使用Docker或CoreOS。 或者,如果您打算虛拟化整個作業系統,或者長時間運作持久性虛拟應用程式,LXD可能會成為更好的解決方案。

要考慮的第二個因素是您的主機環境。 LXD隻支援Linux,至少就目前而言,它隻是用于Ubuntu。 是以,如果您的伺服器運作另一種Linux或Windows,LXD将無法正常運作。 相比之下,Docker和CoreOS幾乎可以在任何基于Linux的作業系統上輕松移植,現在您甚至可以在Windows和OS X上本地運作Docker。

當然,您的裡程可能會有所不同。 但這些是基礎知識。 現在,快樂集裝箱!

編者注: LXC和LXD:解釋Linux容器由Sumo Logic DevOps社群釋出 。 如果您想了解更多資訊或做出貢獻,請通路devops.sumologic.com 。 此外,請務必檢視Sumo Logic開源頁面上的免費工具和代碼,以便您監控應用程式從代碼到生産的故障排除。

https://www.sumologic.com/blog/code/lxc-lxd-explaining-linux-containers/