容器化作業系統概覽
隨著容器技術,特別是Docker的興起,許多新的專門執行容器的Linux發行版本也出現了。和傳統的作業系統對比,使用這樣的系統有一些優勢所在,這篇文章我們來對比下主流的5款容器作業系統發行版本。
概覽
使用專門為容器設計的Linux發行版有如下優勢:
- 體積很小,你只需要一個最小化的OS
- 最小化工具的開銷
- 自動更新
- 大多數預設是叢集模式
- 自動執行Docker服務
- 根檔案系統只讀
- 可回滾自動更新(雙分割槽更新模式)
- 穩定性和安全性提升
我選擇5個不同的發行版本來做個對比:
每個發行版本都用cloud-init來初始化運例項,他們又支援不同的特性,所以讓我們研究下他們的cloud-init。
CoreOS
CoreOS是一個新的Linux發行版本,它被重新設計來提供現代基礎設施。影響CoreOS的策略和架構被用於像Google、Facebook和Twitter這樣的公司來執行其服務。
預設CoreOS配置了一些工具用來執行容器而且是分散式的。容器執行環境的關鍵特性是自動在CoreOS的機器上配置。而且CoreOS提供了自動系統升級的功能,這意味著你不用擔心舊版本的問題。
在CoreOS上你可以配合fleet來使用Docker。 Fleet是一個分散式的init系統,它可將整個叢集看作是一個init系統。你可以通過擴充套件後的systemd unit檔案來啟動fleet unit. 有了fleet,你可以運維分散式的容器應用。
執行CoreOS的主要優勢是etcd。etcd是一個分散式的key/value儲存,它再很多專案中都有應用,像Kubernetes、Cloud Foundry。你可以用etcd來做服務發現甚至更多。而且,主流的雲服務商都提供了CoreOS的支援。
Project Atomic
Project Atomic通過可靠的作業系統平臺整合了一些基於容器應用和服務部署的工具和模式來提供一種端到端的服務架構,他是現代化的,穩定的,而且安全的。
對於Redhat家族成員 Fedora、RHEL和CentOS都有各自獨立的Atomic版本。如果你對其中一個比較熟悉,你也可以將其作為Atomic主機。Atomic Host ReadHat用rpm-ostree替換掉yum用於管理OS包,而且具有自動更新的功能,這意味著你可以回退到之前的版本。而且你也可以通過rpm-ostree-toolbox來建立你自己的映象。
Project Atomic的一大優勢是RedHat成熟的環境。你可以在Atomic主機上使用像SELinux、Kickstart、Anaconda等工具
我已經試過他們的快速上手教程, 但是由於文件中用了比較舊的Atomic版本所以沒能跑起來。我下載了Fedora Atomic,然後成功的將其跑起來。
Ubuntu Snappy
Snappy Ubuntu Core是一個Ubuntu的衍生版本 — 一個擁有和目前Ubuntu一樣的庫的最小化的伺服器映象,但是應用通過一種更簡單的機制來提供。這種方式更快,更可靠,而且讓我們為應用和使用者提供更好的安全保障 — 這就是我們為什麼叫它們『Snappy』應用。
Ubuntu Snappy支援Canonical的AppArmor核心安全系統來提供友好的安全方案。這意味著Snappy可以讓你完全隔離兩個應用。Snappy可以很容易的通過像Docker一樣的框架擴充套件 — 給你的Snappy新增了框架之後你就可以在其上執行應用了。
在Snappy裡所有的系統和應用檔案都儲存在單獨的只讀的映象裡。這意味著更新Snappy會非常容易和可預知。通過增量管理的機制,Snappy也可以保證下載的東西最小化。當然Snappy也提供系統和應用更新的回滾機制。
Snappy預設不包含Docker,但是你可以很方便的安裝Docker來作為一種框架執行應用 — 對於Docker容器的情況。 安裝非常簡單:
snappy install docker
當我在Snappy上嘗試Docker的時候,我因為 permission denied
錯誤沒能執行起來任何容器, 這個bug已經提交到 launchpad
RancherOS
我們啟動RancherOS專案,我們構建了一個最小化的Linux版本用來完美地執行Docker容器。我們想直接在核心之上執行Docker,然後將所有的使用者空間內的服務作為獨立的容器執行。通過這樣,RancherOS就不需要額外的包管理工具的機制。
簡單來說RancherOS就是由容器構成的作業系統。它將Docker作為PID 1來執行,這就意味著Docker是核心啟動的第一個程式。現在另一個有意思的事情是RancherOS執行了兩個Docker服務,一個給系統(系統Docker),一個給使用者(使用者Docker),使用者Docker執行在系統Docker之中。系統Docker負責初始化所有系統服務,包括udev、DHCP和終端。所以RancherOS用Docker作為init系統來以容器的方式管理所有的系統服務,而不是systemd、sysvinit或者upstart。
RancherOS使用兩個Docker服務的理由是即使你不小心停止或者刪掉了所有的容器,你的系統依然能正常執行。
由於你把所有的東西都通過Docker容器來執行,你會擁有最新版的Docker。你可以通過啟動額外的容器來擴充套件RancherOS。比如,你可以執行你自己的console容器來獲取你最喜歡的console。由於你需要監控的安全漏洞的更少了,補丁自然打的少了,穩定性也提高了。
由於所有的系統服務都是由容器提供,你無需像apt-get或者yum的包管理工具。即便核心和initrd不是容器,RancherOS也使用Docker的打包和釋出機制來分發核心和initrd更新。
RancherOS可以作為嵌入式系統的一個備選方案。
VMware – Photon
Photon是一個最小化容器化Host, 它被設計得非常輕量而且能在VMware的平臺上快速啟動。Photon的設計初衷是在虛擬化環境中執行容器應用。
VMware加入到為容器建立新的發行版本的大潮中。VMware Photon是一個專門為vSphere優化的最小化Linux容器發行版。Photon支援常見的容器,包括Docker、Rocket和Pivotal Garden容器規範(基於Vmware Warden)。另外,WMware Photon自帶了一個高效的生命週期管理工具,其中包括了相容yum的包管理工具。
Photon最大的優勢來自於VMware的Lightwave. Lightwave提供了集中化的認證和授權身份管理。 它支援很多開放標準,像LDAP、Kerberos、 SAML和OAuth2.0。簡單來說,Lightwave給你的環境帶來了一層新的容器安全。在上邊的圖表中你可以看到Lightwave是怎麼提供集中化的認證和授權管理的。
對比表
結論
正如電腦科學行業裡的道理一樣,從來也沒有萬能膏藥。你最好的選擇通常由你的專案決定 – 如果你有greenfield專案你可能用新技術, 如果你有brownfield專案你可能需要可靠的技術。這並不意味著兩種技術不能同時用。從另一個方面講,你需要知道自己需要什麼,你的團隊對什麼熟悉。而且不要忘了這些技術仍然處於起步階段,仍然有一些在生產環境不容發生的問題。此外,這些新專案仍然在發展階段,變化還比較大。
時間會告訴我們這些新的作業系統會如何影響伺服器/雲/資料中心的世界。我認為穩定的系統和這些新系統會依賴於你的環境而共存。
總之,你可以說你有很多選擇來執行你的Docker基礎設施。而且不要忘了:你也可以在傳統系統上執行你的容器 — 不需要立馬就切換所有的東西。
原文連結:Docker: A Comparison of Minimalistic Operating Systems(翻譯:張向軍 校對:宋喻)
相關文章
- Linux核心實戰(二)- 作業系統概覽Linux作業系統
- 推薦系統技術概覽
- visionmobile:系統紛爭,各移動作業系統資料概覽作業系統
- 詳解Java 容器(第①篇)——概覽Java
- 學習Tomcat(一)之容器概覽Tomcat
- 作業系統1—作業系統概論(上)作業系統
- 作業系統2—作業系統概論(下)作業系統
- 傳iOS 9系統將著重於穩定和最佳化作業系統iOS作業系統
- 6款國產化作業系統Office辦公軟體推薦!作業系統
- 不再開發統一的定製化作業系統 Meta解散XROS團隊作業系統ROS
- 計算機系統008 - 作業系統概況計算機作業系統
- 陳生強:京東數科的底層是數字化作業系統作業系統
- MySQL體系結構概覽MySql
- oracle體系結構概覽Oracle
- 概覽
- 首個全棧國產化作業系統釋出,中興新支點作業系統與騰訊強強聯合全棧作業系統
- 機器學習概覽機器學習
- 大資料全系技術概覽大資料
- 直擊JDD | 陳生強:京東數科的底層是數字化作業系統作業系統
- 作業系統已死?容器勝出!作業系統
- Babel 社群概覽Babel
- Hooks概覽(譯)Hook
- 推理框架概覽框架
- Flutter框架概覽Flutter框架
- Java NIO 概覽Java
- 學習概覽
- IT專案概覽
- 02323作業系統概論 第一章 作業系統簡介作業系統
- vivo商城促銷系統架構設計與實踐-概覽篇架構
- 誰是最棒的容器作業系統?作業系統
- PyQt5 概覽QT
- Dart語言概覽Dart
- React Hooks-概覽ReactHook
- Flutter技術概覽Flutter
- HTTP報文 概覽HTTP
- Redis分散式概覽Redis分散式
- BIO,NIO,AIO概覽AI
- Vuex - 原始碼概覽Vue原始碼