元旦大家出去嗨,棧長在家擼文章,慘慘慘…java
沒錯, Docker 的 2020 年也過的不是很順利,能夠說是流年不利、命運多舛,一年發生兩件大事,太折騰!git
相信你們也已經看到不少相關的報道了,但同時也有不少人被鋪天蓋地的信息所誤解、所迷惑,不少人不清楚事實的真相,咱技術羣裏還有人說不要學了之類的,帶着不少偏見和誤解,好比:github
今天棧長就來總結下 Docker 的 2020,帶你們來揭開這些謎團。spring
Docker 簡介:docker
Docker 是如今最主流的開源容器,Docker 的核心思想是:"Build once, Run anywhere",即:一次構建,到處運行,也基本成爲了如今容器的代名詞。微信
咱們能夠將 Docker 理解爲一個輕量級的沙盒,Docker 容器徹底使用沙盒機制,每一個容器內都有其獨立運行的環境和組件,容器之間是相互隔離互不影響的,也能夠進行容器間的通訊。架構
更多請參考:年輕人的第一個 Docker 應用!intellij-idea
關於 Docker 被禁的消息,其實最先在 2017 年就被禁止在 7 個國家使用了,去年的 8 月,一則 Docker 被禁的消息又襲轉了朋友圈和各大技術平臺,由於其主要針對的是 "實體清單" 上的公司,而許多中國公司又在實體清單上面。負載均衡
來看下最新的 Docker 服務條款:運維
最新的條款生效日期是 2020/12/14:
依舊寫着禁止 Docker 在米國政府 "實體清單" 上的企業、我的使用,Docker 雖然是一個開源容器,但其自己也是一家米國公司,因此必須得遵照米國在出口方面的法律限制。
因此,若是你所在的公司不在那個實體清單上面,那徹底不用驚慌!!
那公司在這個清單上面該怎麼辦呢?
看 1.1 的描述,這個條款針對的是 Docker 相關網站上提供的服務,那禁用的也是 Docker 網站提供的商業服務(好比 Docker Hub、Docker EE 等),開源的版本並不受影響,然而真正用商業服務和付費版的公司又有幾個呢?不得而知!反正咱們不用~
一句話再總結下:
禁止 Docker 在米國政府 "實體清單" 上的企業、我的使用在其網站上提供的商業服務
因此不用 Docker 的商業服務不就沒事了,通常的公司徹底不用擔憂,再不行在開源版本上拉個分支本身幹或者換一個容器不就完事了。
推薦閱讀:Docker 被禁?還有千千萬萬個 Docker 站起來!
去年 12 月,又有一波關於 "K8S 棄用 Docker" 的消息開始刷屏……
Kubernetes 簡介:
kubernetes,簡稱:K8s,是 Google 開源的一個容器編排引擎,它支持自動化部署,以及大規模、可伸縮應用容器化管理。Kubernetes 中能夠建立多個容器,每一個容器裏面運行一個應用實例,而後經過內置負載均衡策略實現這一組應用實例的管理、發現、訪問,而這些細節都不須要運維人員進行復雜的手工配置和處理。
參考來源:百度百科
爲何 K8S 棄用 Docker?
沒錯,來看 Kubernates 1.2.0 的變動日誌:
如圖所示,在棄用部分第一條就是:
如今 Docker 在 Kubelet 中的支持已經被棄用,而且會在將來的版本中完全移除,由於 Kubelet 使用了一個名叫 "dockershim" 的模塊,它實現了 Docker 對 CRI 的支持,但它在 Kubernetes 社區已經出現了一些維護性的問題。咱們建議你評估並遷移容器運行時,也就是成熟的 CRI 完整實現(兼容 v1alpha1 和 v1),如今已是可用狀態。
總而言之就是維護問題,建議遷移到新的容器運行時。
Docker 和 k8s 有什麼關係?
首先須要搞清楚 Docker 在現有 Kubernetes 架構中的做用,來看下 Kubernetes 的架構圖:
在 Kubernetes 架構中,每一個 Kubernetes 節點都與控制面板進行通訊,Docker(或者其餘容器運行時)僅用於在實際主機中運行應用程序,各個節點上的 kubelet 經過獲取元數據,並執行 CRI(Container Runtime Interface,即容器運行時 API 接口)以在該節點上進行容器的建立/刪除操做。
Kubernetes 只能與CRI 進行通訊,而不能直接用 Docker API 進行通訊,Docker 又並不支持 Kubernetes 提供的 CRI,因此以前使用 Kubernetes 就只能經過 "dockershim" 提供的橋接服務來轉換 Docker API 和 CRI,但因爲維護性問題,Kubernetes 最終仍是棄用了 dockershim 這一橋接服務。
Docker 被棄用後怎麼辦?
其實也不用慌,CRI 運行時有兩種實現方案:
containerd 就是從 Docker 分出去的開源項目,而且提供的 CRI 功能也是徹底由 Docker 提供的,Docker 自身也用到了 containerd,而 CRI-O 主要由 Red Hat 開發,並不依賴 Docker,因此,從 Docker 遷移到 containerd 是最好的選擇。
Docker 確實被禁用了,但影響的只是實體清單上的公司的 Docker 提供的商業服務,開源版本不受影響,和咱們普通開發也不要緊。
Docker 也確實被 k8s 棄用了,但還有其餘的選擇,好比:containerd,就是徹底兼容 Docker 的,能夠繼續使用 Docker 進行開發,因此對於普通開發用戶來講是不受任何影響的,但對於 k8s 管理員來講就須要考慮遷移到新的容器運行時,畢竟在將來不久的版本中 k8s 會完全移除對 Docker 的支持。
總之, Docker 還是目前最優秀的開源容器,放心大膽用吧!
因此,不要再被誤導了,咱們普通開發人員徹底不用考慮禁不由、棄用不棄用的事,該學學,該用用,吃嘛嘛香,何樂而不爲呢?
但話又說回來,Docker 是家米國公司,將來開源版會不會也受影響呢?
我只能說應該不會,若是開源的都被禁,那咱們經常使用的 Java、Linux、Spring 等開源技術都不能用了?不太可能!不少人的擔憂、驚慌也並不無道理,惟有開發本身的核心技術纔會不用受制於人!
最後, Docker 被禁損失的是 Docker 公司和米國本身的利益,簡直是搬起石頭砸本身的腳,另外,Docker 也不是必須的,不用 Docker 也還有不少其餘的選擇,Docker 沒火以前不也過的好好的,因此徹底不用驚慌。
至於 Docker 的後續發展,請持續關注Java技術棧微信公衆號,棧長將第一時間跟進最新動態。你也能夠在後臺回覆:動態,獲取棧長整理的更多往期熱門好玩的技術資訊。
參考:
版權申明:本文系公衆號 "Java技術棧" 原創,原創實屬不易,轉載、引用本文內容請註明出處,禁止抄襲、洗稿,請自重,尊重他人勞動成果和知識產權。
近期熱文推薦:
1.Java 15 正式發佈, 14 個新特性,刷新你的認知!!
2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!
3.我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看。。
以爲不錯,別忘了隨手點贊+轉發哦!