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

圖片來源:Doug Tidwell我想,此圖勝過千言萬語了。請自由地分享這篇文章,並在Twitter()上與我分享你的反饋。::Mr.lzc,軟體工程師、DevOpsDays深圳核心組織者,目前供職於華為,從事雲端儲存工作,以Cloud Native方式構建雲檔案系統服務,專注於K8s、容器、微服務領域。