再見Docker!感謝所有人!
【編者的話】Docker不再是唯一的容器運行時,與Docker所能提供的相比,即將出現的其他容器運行時將更快、更安全、更智能、功能更豐富(其中一些已經如此)。Docker,再見!感謝Docker!感謝所有在容器技術上做出付出與貢獻的可愛的人們!
早在2018年7月,我就開始寫一篇關于Docker作為公司即將消亡的博客文章(也可能是作為一種技術消亡),但我從來沒有抽出時間來完成和發表這篇文章。是時候把那篇文章拿出來了。
當然Docker還在這里,每個人都還在使用Docker,并且在不久的將來還會繼續這樣做(可預見的將來會有多遠——還有待確定)。我之所以選擇這個標題作為博客文章的標題,是因為在我看來,Docker作為一家公司的日子已經***了,或許它作為技術也是這樣。請允許我占用你幾分鐘的時間,我將與你分享我的想法的基礎。
幾年前,Docker是一家改變世界的公司,我們可以肯定地說,今天仍然在改變世界。容器和容器背后的技術已經存在多年,遠在Docker這個詞還沒被想到,甚至變成了一個動詞(“容器化”所有的應用)之前就已經存在了,但Docker是鼓勵大眾消費技術的公司。容器,以一種簡單容易且時尚的方式存在著。大多數技術公司(或者至少是那些認為自己是現代技術公司的公司)將使用Docker或容器作為其產品或管道的一部分,因為它非常有意義,并為整個流程帶來了如此多的好處。
在過去的12-24個月里,人們逐漸意識到Docker已經走完了自己的路,作為一種技術,他們將無法為今天的產品提供額外的價值,并決定從其他地方尋找額外的優勢。
Kubernetes贏得了容器編排之戰,我想沒有人否認這一事實。Docker本身也采用了Kubernetes。總會有一些利基玩家(niche players)擁有特定的Docker Swarm、Mesos、Marathon和Nomad的用例,但事實上的標準是Kubernetes。所有3家大型云服務提供商現在都有一個托管的Kubernetes解決方案,可以提供給他們的客戶(最終將會淘汰他們自己多年來開發的自制解決方案,因為只能有一個)。每家云服務提供商都在建設更多的服務,提供更多的解決方案,以吸引更多的客戶,增加他們的收入。
故事到這里就結束了,這沒什么好看的。接下來是閃亮的東西。
目前,Kubernetes使用Docker作為底層容器引擎。我認為Kubernetes社區理解Docker作為一個容器運行時(我特別使用這個術語)是盡快推出產品的最終解決方案。他們也很早就(明智地)認識到,他們需要有一個選擇,那就是切換出容器運行時的選項,并最終允許Kubernetes的消費者做出選擇。
開放容器計劃帶來了運行時規范,它打開了一扇門,讓我們所有人都可以使用Docker以外的其他東西作為運行時。而且它們還在穩步增長。Docker不再是唯一使用的運行時。他們正在社區中成長,社區正在慢慢地分享如何使用Docker之外的其他東西的知識。Kelsey Hightower——從CRI-O到containerd再到gVisor,多年來一直在努力更新他的Kubernetes(坦白說,這是一項了不起的工作)。社區里所有的酷孩子都不再使用Docker作為底層運行時。現在有許多其他的選擇,比如clearcontainers、katacontainers,并且這個列表還在不斷地增長。
大多數人(包括我自己)都不具備足夠的知識和專業技能,不知道如何將運行時切換到他們想要的運行時,通常只是使用默認的開箱即用的運行時。當人們明白他們可以很容易地選擇更換容器運行時,并且知識是現成的、容易獲得的,我認為我們沒有任何理由再使用Docker,因此Docker作為一種技術和一家公司會慢慢消失。與Docker所能提供的相比,即將出現的其他容器運行時將更快、更安全、更智能、功能更豐富(其中一些已經如此)。如果你有一個更好、更智能、更安全的產品——為什么人們會繼續使用不再適合他們日益增長的需求的技術呢?
對Docker來說,為了避免這種結果,我建議投入盡可能多的精力,為任何工作負載創建***的運行時,這樣Docker仍然是每個人使用的事實上的標準。這里有個問題是,容器運行時沒有錢,Docker從來沒有在運行時賺錢,他們在容器運行時之上和之上的企業特性中尋找收入。他們將如何解決這個問題,超出了我以及這篇文章的范圍。
Docker社區群體一直在穩步下降,受歡迎程度一直在下降,新特性和公告的數量也在下降,而且在過去一兩年中一直在下降。
前段時間有人告訴我,說壞話或者告訴別人壞消息通常很容易。我們可以很容易地說這是錯的,這沒有用,這應該改變。但是如果沒有提供一個積極的轉折,你就會變成一個悲觀的人。“死神”,別做那樣的人。
我想聽聽他們的建議,并在此基礎上補充一點,這對你今天意味著什么。你應該開始投資于理解這些其他運行時如何幫助你,在它們合適的地方,增加你的知識和專業技能,這樣你就可以做好準備,當其他人停止使用Docker時,你會發現自己不得不匆忙地調整所有的基礎設施。我認為這是不可避免的。
以上就是我8個月前想寫的帖子……
促使我今天完成這篇文章的是Scott Mccarty的一篇文章——關于即將到來的RHEL 8 beta版——Enterprise Linux 8 beta版:一套新的容器工具——以及我隨后發布的Twitter:
瞧吧,RHEL 8不再有Docker可用了。
如果你是一個容器老手,你可能已經養成了通過安裝Docker包來定制系統的習慣。在你全新的RHEL 8 Beta系統中,你可能要做的***件事就是去找你的老朋友yum。你將嘗試安裝Docker包,但是沒有成功。如果你很聰明,接下來,你會搜索并找到這個包:
- podman-docker.noarch : "package to Emulate Docker CLI using podman."
這個Podman是什么?Docker包被容器工具模塊替換,該模塊由Podman、Buildah、Skopeo和其他幾個小部件組成。
譯者:Mr.lzc,軟件工程師、DevOpsDays深圳核心組織者,目前供職于華為,從事云存儲工作,以Cloud Native方式構建云文件系統服務,專注于Kubernetes、容器、微服務領域。