docker的替代方案

docker的替代方案

起源

在現(xiàn)代化的軟件工業(yè)生產(chǎn)中,docker被廣泛應(yīng)用,盡管docker并不是容器的同義詞,但容器確因docker而廣泛流行開來。本文并不打算敘述使用docker的優(yōu)缺點(diǎn),而是探討docker/docker desktop之外的解決方案。

本來業(yè)內(nèi)使用docker來提高生產(chǎn)力是一件很自然的事:開源、免費(fèi)、龐大的社區(qū)、完善的文檔、谷歌以下就能獲得解決方案,學(xué)習(xí)成本和使用風(fēng)險都很低,基本是各大平臺的安裝首選。

而在linux以外的平臺使用docker,最有生產(chǎn)力的安裝方式自然是docker
desktop。然而美好的日子總有個盡頭:docker公司在2021-8-31改變了他們的授權(quán)策略。大體意思是,個人(非商業(yè))/開源項(xiàng)目使用仍然免費(fèi);中小企業(yè)——少于250個開發(fā)者并且年收少于1000萬美元,也可以免費(fèi)使用。這看起來對大多數(shù)人或企業(yè)來說并沒有什么影響——中小企業(yè)仍然不需要為使用docker而付費(fèi),而收入大于1000萬美元的企業(yè)也不會太在意一筆不多的額外支出,docker的收費(fèi)標(biāo)準(zhǔn)并不高,而對于大公司來說,法律風(fēng)險更需要得到控制。

但是之后社區(qū)明顯開始出現(xiàn)了擔(dān)憂,盡管授權(quán)改變后仍然能免費(fèi)使用docker,社區(qū)開始積極尋找docker的替代方案,甚至是出現(xiàn)了為此而誕生的新項(xiàng)目。最根本的,并不是license內(nèi)容是什么,盡管現(xiàn)在還是免費(fèi)的。最根本的擔(dān)憂源于license會發(fā)生變化本身——docker擁有完整的控制權(quán),他們完全可以在任何時候再對授權(quán)作出任何單方面修改,而你——作為用戶,對此毫無辦法,甚至不該奢望一定會得到提前通知。

下面我們就聊聊各大主流系統(tǒng)在docker之外還能干些什么。

GUI(docker desktop alternatives)

linux一直是開源社區(qū)的頭等公民,而命令行又是linux下的頭等公民,作為一個常年使用linux的用戶,我甚至沒有在linux下安裝docker desktop的欲望——使用命令行是常識。

而docker community edition——完全不需要擔(dān)心會被收費(fèi),docker不可能會放棄linux平臺,這是另外一個故事。

如果你是一位常規(guī)linux desktop用戶,那么除了docker desktop,你還有以下選擇:

Rancher Desktop(推薦)

這是一個suse公司的產(chǎn)品,其組成使用的全部是開源項(xiàng)目。安裝也非常簡便,支持linux、macos、windows,完全可以平替docker desktop,要注意的是,其k8s集成使用的是自家的k3s,而不是google的k8s標(biāo)準(zhǔn)版。當(dāng)然,使用k3s作為開發(fā)工具并無不妥,甚至還比較節(jié)省資源,除非你需要一個標(biāo)準(zhǔn)的k8s環(huán)境進(jìn)行測試(這也有另外的很多方案可以選擇)。

Rancher Desktop還在穩(wěn)步發(fā)展,并且進(jìn)展很快,已經(jīng)有了自己的plugin系統(tǒng),除非重度依賴docker desktop plugin,否則可以完全平穩(wěn)過度到rancher desktop上。這是個首選方案。

Podman Desktop

沒錯,docker的老對頭,來自redhat。他們有自己的desktop,也同時支持linux、macos、windows。

雖然podman基本兼容docker,但是cli命令行使用仍然需要作出一些習(xí)慣上的改變。

并且podman在各大工具鏈中目前還一直處于二等公民的狀態(tài)(例如minikube對podman的支持仍然標(biāo)記為實(shí)驗(yàn)性的),所以如果你生活在podman的生態(tài)中,那完全可以試試這款desktop版本。docker生態(tài)下,仍然是rancher desktop過度更平穩(wěn)些。

Run without GUI

實(shí)際上這一節(jié)是為macos而寫的。

如果不需要一個gui版本的工具,linux下仍然可以使用docker communiti edition,一如既往的sudo apt-get install docker。

windows用戶命令行如果使用wsl,那么與linux沒有什么區(qū)別,畢竟是一個定制的linux虛擬機(jī)。如果要在wsl外使用原生cli,則還是參考GUI方案選擇安裝之一即可。

macos的情況會復(fù)雜一些。macos沒有類似wsl的東西,選擇GUI替代方案是一個很好的選擇。如果你和我一樣嫌棄GUI太費(fèi)系統(tǒng)資源并且不夠自動化,那么請看下面的方案。

minikube

這其實(shí)是一個k8s生態(tài)下的工具,主要用于構(gòu)建本機(jī)k8s環(huán)境方便測試用的。因?yàn)槠湟仓С质褂胐ocker作為backend,所以用來替代在本機(jī)安裝dockerd是一件半道上順便的事。

其原理是在后臺啟動一臺虛擬機(jī)作為dockerd的環(huán)境,并將socket開放給本機(jī)使用。

詳細(xì)可以參考官方文檔Using minikube as Docker Desktop Replacement

要注意的是,minikube在將本機(jī)目錄掛載到vm中有一些限制

另外,minikube也支持podman。

lima

lima其實(shí)就是macos下的一款虛擬機(jī)管理軟件,比較誘人的地方是其可以使用macos原生hyperkit虛擬化方案作為驅(qū)動。

使用lima可以很方便的啟動一臺安裝了dockerd的linux虛擬機(jī),然后expose給本機(jī)使用。

缺點(diǎn)是,作為替代docker使用,其不夠方便。你仍然需要為虛擬機(jī)做一些無關(guān)的手工定制——實(shí)際上你只是想使用docker而已!

另外lima作為通用linux虛擬機(jī)管理,對image進(jìn)行優(yōu)化以適合【只為了跑docker】這一目的并非lima的功能職責(zé)。

這就是為什么接下來要提到colima

colima(推薦)

一句話總結(jié):只是想在macos命令行使用docker,那么你只需要colima。

colima是基于lima為容器以及docker使用進(jìn)行優(yōu)化,你再也不需要自己定制一個docker虛擬機(jī)模板,也不需要為image過于臃腫而進(jìn)行優(yōu)化——colima做了這些,你只需要:colima start

為什么不使用virtualbox自己搭建虛擬機(jī)?

這是個好問題。且不論為使用docker而對虛擬機(jī)進(jìn)行優(yōu)化的問題;理論上可行,在intel mac上實(shí)際也可行,但如果是使用arm架構(gòu)的新款mac——virtual box沒有arm版本。

在macos arm上開虛擬機(jī),選擇就非常有限——libvirt/qemu lima/colima minikube UTM?!?dāng)然,我是說免費(fèi)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容