十二大Docker開源替代產品

木子87發表於2020-09-27

眾所周知,在全球範圍內,Docker已經發展成為雲端計算的核心技術之一。

作為流行的容器管理技術,Docker的最大優點是能將應用與計算環境分離,允許開發者在同一臺計算機上使用不同的技術。通過Docker,開發者可以使應用程式在同一伺服器上執行Python、Ruby、PHP、Node JS或任何其他語言,並將每個應用程式安裝在具備獨立資料庫引擎的單獨容器中。

但是,8月13日生效的Docker公司最新服務條款引起了國內IT業界的廣泛關注。該條款明確指出,Docker公司提供的服務,禁止美國“實體清單”上的實體使用。
1.jpg

目前中國IT公司被列入貿易管制“實體清單”的企業包括:華為、商湯、依圖、曠視、海康威視、大華、科大訊飛、美亞柏科、頤信科技、奇虎360、烽火科技集團、東方網力、達闥科技、雲從科技、中科曙光、海光等。

而且,未來不排除更多的中國IT公司會被“請進”這個“實體清單”。

雖然受“實體清單”禁令限制的是Docker商業版及Docker的其它服務,比如Docker Hub,但這依然給Docker中國的前景蒙上了陰影。

而且,有業內人士指出:Docker這家公司到目前,最有價值的不是Docker軟體本身,而是Docker Hub。

開源,當下依然是最安全的選擇。Linux基金會不久前釋出《瞭解開源科技和美國出口管制》白皮書指出,美國出口管制條例EAR明確豁免了大多數以開源形式呈現的軟體和技術。

對於國內的IT企業和網路安全企業來說,Docker的“實體清單”禁運,事實上已經敲響了警鐘,是時候開始評估Docker的開源替代品了。
頂級Docker替代品
Docker遠非完美的產品,存在很多缺點。例如必須以root許可權執行,並且停止容器將刪除其中的所有資訊(卷中的內容除外)。其他缺點還包括:安全性和隔離性不如VM、大規模不易管理(Kubernetes應用而生)、問題排查較難、不支援Windows等。

事實上,目前Docker軟體有不少優秀的替代品,其中不少產品的技術成熟度、穩定度和資源佔用方面的表現不輸甚至優於Docker。

以下,我們推薦十二個Docker的最佳替代產品。
OpenVZ
2.png

OpenVZ是基於Linux的流行的作業系統級伺服器虛擬化技術,可在單個物理伺服器中建立多個安全且隔離的虛擬環境,從而提高伺服器利用率和效能。虛擬伺服器確保應用程式不會衝突,並且可以獨立重新啟動。

OpenVZ還提供了一個網路檔案系統(NFS),允許從OpenVZ虛擬環境訪問網路磁碟檔案。該工具支援IA64處理器的檢查點和實時遷移,此功能是其他開源作業系統虛擬化軟體所無法提供的,系統管理員無需終端使用者干預即可使用虛擬伺服器在物理伺服器之間移動,而無需昂貴的儲存系統。

OpenVZ是一種開源技術,也是SWsoft的Virtuozzo虛擬化產品的基礎。它為虛擬環境中的VLAN提供了標準支援,從而允許在不同網路上標記每個網路資料包。支援FUSE(使用者空間中的檔案系統),例如,它可以將FTP或SSH伺服器顯示為虛擬環境中的檔案系統。

網站:https://openvz.org/

系統支援:Linux
Rancher
3.png

Rancher是一種開源的容器管理技術,提供完整的容器基礎設施服務,包括網路、儲存服務、主機管理和負載均衡等,支援各種基礎架構,可以簡單可靠地部署和管理應用程式。

網站:https://rancher.com

支援系統:Linux
Nanobox
4.png

Nanobox是開發人員的理想DevOps平臺。Nanobox可以完成基礎結構的所有構建,配置和管理,因此您可以專注於程式碼而不是配置。

藉助Nanobox,你可以自由地建立一致且隔離的開發環境,該環境可以輕鬆地與任何人共享,並且可以在任何主機(AWS、Digital Ocean、Azure、Google等)上實現。開發人員可以在本地計算機和雲提供商之間一致地執行其應用程式。

你可以非常輕鬆地使用Nanobox儀表板管理生產應用程式,Nanobox還支援零停機時間部署和擴充套件,並通過統計資訊顯示板以及歷史日誌輸出來監視應用程式的狀態。

網站:https://nanobox.io/

系統支援:基於Web
Podman
5.png

PodMan是一個虛擬化的容器管理器,可用於Linux發行版,它的特殊之處在於它不需要執行Daemon,而是直接在runC上執行,PodMan允許我們以沒有root特權的使用者身份執行容器,從安全層面來看這極為重要!

通過Podman,我們不僅可以檢查OCI映象,甚至不下載它們,還可以從一個儲存庫中提取元素並將其直接移動到另一個儲存庫中,映象檔案無需通過我們的裝置傳輸。我們無需下載映象即可檢查或使用其元件。Podman還允許執行預設啟用Systemd的容器,無需進行任何修改。

Podman支援套接字啟用,因此我們可以使用該系統來配置套接字,並可以訪問用於與該工具進行通訊的遠端API。它能夠通過名稱空間使用UID分隔,這在執行容器時提供了額外的隔離層。

下載連結:https://developers.redhat.com/ … dman/

系統支援:Linux
rkt
6.png

rkt屬於CoreOS發行版,專為容器虛擬化和處理而開發。如今,它已成為Docker最大的競爭對手之一。rkt可在諸如ArchLinux、Core OS、Fedora、NixOS等Linux平臺上工作。

CoreOS決定啟動rkt的主要原因之一就是安全性。在1.1版之前,Docker需要以root使用者身份執行,這是一個非常嚴重的漏洞,允許超級使用者級別的攻擊。相反,rkt允許我們對Linux許可權使用標準的組處理,從而允許容器在沒有root特權的使用者建立後執行。

Docker的優勢是易於整合,而rkt需要更多的手動安裝和配置。無論如何,它仍然是Docker的很好替代品,因為它允許我們使用APPC映象(App容器映象)以及Docker映象。反過來,它也允許與Kubernetes和AWS Orchestrator整合。

下載連結:https://github.com/rkt/rkt

系統支援:Linux
Singularity
7.png

Singularity是用於HPC(高效能運算)的作業系統虛擬器,因為它不需要與具有root特權的使用者一起執行,並且由於其隔離級別而非常適合在共享空間中使用。其安全理念是“不安全的客戶端執行不安全的容器”,這完全改變了安全正規化。

關於Singularity的另一個重要事實是,我們可以匯入和使用我們已經擁有的Docker映像。我們甚至可以在本地編輯容器,然後將其掛載到共享環境中,因為它不需要root特權即可掛載。也可以使用基本檔案傳輸協議(例如RSYNC、HTTP、SCP等)進行傳輸。

下載連結:https://sylabs.io/singularity/

系統支援:Linux
Kubernetes(K8s)
8.png

Kubernetes是一個用於自動組織和管理容器化應用程式的開源系統。如果要使用流行的開源Linux容器設計應用程式,那麼Kubernetes可能是為私有,公共或混合雲託管建立雲原生應用程式最理想的方法之一。

Kubernetes使容器化應用程式的部署,管理和擴充套件自動化,可以更輕鬆,快速和高效地執行該過程。使用者現在可以一鍵式更新來更新他們在叢集中使用的Kubernetes的核心版本。使Kubernetes叢集保持最新狀態變得相當容易,因為現在無需重新部署叢集或應用程式就可以做到這一點。

Kubernetes是一個開源專案,由Cloud Native Computing Foundation(CNCF)和Linux Foundation管理。這可以確保該專案得到大型開源社群的最佳實踐和想法的支援,此外還消除了依賴單個提供商的風險。

網站:https://kubernetes.io/

系統支援:基於Web和Linux
Red Hat OpenShift Container Platform
9.png

Red Hat OpenShift Container Platform是一個開源的企業級Kubernetes平臺,可用於開發、部署和管理橫跨企業內部、私有云和公有云架構中的容器化應用。

網站:https://www.openshift.com/prod … tform

系統支援:Linux、Windows
Apache Mesos
10.png

Mesos是基於Linux核心的開源叢集管理工具,可以在任何平臺(Linux、Windows或OSX)上執行。它還為應用程式提供了用於資源管理和計劃的API。可從專用伺服器或虛擬機器中提取CPU、記憶體、儲存和其他資源,從而使彈性系統易於構建且可以高效執行,容錯能力突出。

Mesos使用兩層排程系統,在該系統中,它確定要分配給每個框架的資源的數量,而框架則確定要接受的資源以及在這些資源上執行哪些任務。你可以擴充套件到50,000個節點,在不同框架之間共享叢集,並不斷優化。

Mesos允許叢集執行應用程式所在的框架,在不同伺服器之間分配負載,從而避免過載,獲得最佳效能。Mesos通常用於Java、Python、Scala和R應用程式。

網站:http://mesos.apache.org/

系統支援:Linux、OSX和Windows
FreeBSD
11.png

FreeBSD以其功能,速度,安全性和穩定性而著稱。它來自BSD,這是在加州大學伯克利分校部署的UNIX改編版。它被廣泛的社群部署和追隨。FreeBSD提供了許多獨特的功能,尤其以建立出色的Internet或Intranet伺服器而聞名。FreeBSD可以在高負載下提供強大的網路服務,記憶體利用效率高,可以快速響應數百萬個併發程式。

FreeBSD還提供了針對聯結器和完整平臺的改進的網路作業系統功能,支援從Intel推崇的高階聯結器到ARM、MIPS和PowerPC硬體平臺。FreeBSD擁有23,000多個庫和外觀應用程式,可支援用於桌上型電腦、助手、裝置和整合媒體的應用程式。

網站:https://www.freebsd.org/

系統支援:Unix和基於Web的
Vagrant
12.png

Vagrant是自動建立和配置可移植可執行虛擬機器的工具。與Docker這樣的DevOps工具相比,Vagrant的一大優點是,任何電腦科學家/程式設計師/開發人員(甚至是使用Windows的人)都能快速掌握並使用它,因為Vagrant能配置並自動建立虛擬機器。

Vagrant安裝在開發人員的計算機上,面向開發環境,而不是生產環境。甚至Vagrant的開發公司都不推薦在生產環境中使用Vagrant。Vagrant是跨平臺的,支援的系統包括:Mac、Windows、CentOS和Debian。Vagrant的定位是開發人員之間的,安裝可移植且可執行開發環境的工具。

預設情況下,Vagrant使用Virtual Box進行虛擬化,但可與任何虛擬化軟體一起使用,Vagrantfile配置檔案的語法也很簡單。

網站:https://www.vagrantup.com/

系統支援:Debian、centOS、Arch Linux、Linux、FreeBSD、macOS和Microsoft Windows

檔案大小:210 MB(用於Windows)
LXC
13.png

LXC是一種作業系統級別的虛擬化技術,允許使用者獨立建立和執行多個虛擬Linux環境。

與Docker的不同之處在於,LXC可看作是一個完整的作業系統。另一方面,Docker只能執行單個應用程式,並且對OS有一定的限制。與Docker相比,LXC是一種更輕便,更安全的選擇,因為它消耗的資源更少,並且不需要以root身份執行。

上述優點的代價就是複雜性增加,除此之外,我們還必須新增糟糕的文件。通常,當我們使用容器時,我們想要的是快速,輕鬆地建立我們的工作環境。因此,LXC這個替代方法更適合高階使用者。

網站:https://linuxcontainers.org/

系統支援:Linux

以上是十二種可以在多作業系統上使用的頂級Docker替代軟體。如果您有更好的Docker替代產品推薦,請提交在留言區。

相關文章