5分鐘帶你快速了解Docker和k8s

2021-10-14 01:43:46 字數 3813 閱讀 5331

隨著k8s 作為容器編排解決方案變得越來越流行,有些人開始拿 docker 和 k8s進行對比,不禁問道:docker 不香嗎?

k8s 是kubernets的縮寫,』8『代表中間的八個字元。

其實 docker 和 k8s 並非直接的競爭對手,它倆相互依存。 docker 是乙個容器化平台,而 k8s 是 docker 等容器平台的協調器。

虛擬化技術已經走過了三個時代,沒有容器化技術的演進就不會有 docker 技術的誕生。

虛擬化技術演進

(1)物理機時代:多個應用程式可能會跑在一台機器上。

物理機時代

(2)虛擬機器時代:一台物理機器安裝多個虛擬機器(vm),乙個虛擬機器跑多個程式。

虛擬機器時代

(3)容器化時代:一台物理機安裝多個容器例項(container),乙個容器跑多個程式。

容器化時代

容器化解決了軟體開發過程中乙個令人非常頭疼的問題,用一段對話描述:

測試人員:你這個功能有問題。

開發人員:我本地是好的啊。

開發人員編寫**,在自己本地環境測試完成後,將**部署到測試或生產環境中,經常會遇到各種各樣的問題。明明本地完美執行的**為什麼部署後出現很多 bug,原因有很多:不同的作業系統、不同的依賴庫等,總結一句話就是因為本地環境和遠端環境不一致。

容器化技術正好解決了這一關鍵問題,它將軟體程式和執行的基礎環境分開。開發人員編碼完成後將程式打包到乙個容器映象中,映象中詳細列出了所依賴的環境,在不同的容器中執行標準化的映象,從根本上解決了環境不一致的問題。

容器化技術的特點

占地小:容器只需要其應用程式以及它需要執行的所有容器和庫的依賴清單,不需要將所有的依賴庫都打包在一起。

共享 bin 和 lib:不同的容器可以共享 bin 和 lib,進一步節省了空間。

2023年一位年輕小夥子在美國舊金山成立了一家名叫【dotcloud】的公司, 開發了 docker的核心技術,從此開啟了容器技術的時代。

docker原公司

後面 dotcloud 公司將自己的容器技術進行了簡化和標準化,取名為 docker,就是大家熟悉的鯨魚 logo。

docker新logo

2023年dotcloud 公司宣布將 docker 開源,隨著越來越多的工程師發現了它的優點, docker 的人氣迅速攀公升,成為當時最火爆的開源技術之一。

當前有30%以上的企業在其aws環境中使用docker,並且這個數字還在繼續增長。

docker使用率越來越高

其實大多數人談論 docker 時說的是 docker engine,這只是乙個構建和執行的容器。

在執行容器前需要編寫docker file,通過 dockerfile 生成映象,然後才能執行 docker 容器。

docker file 定義了執行映象(image)所需的所有內容,包括作業系統和軟體安裝位置。一般情況下都不需要從頭開始編寫 docker file,在 docker hub 中有來自世界各地的工程師編寫好的映象,你可以基於此修改。

儘管docker為容器化的應用程式提供了開放標準,但隨著容器越來越多出現了一系列新問題:

解決這些問題需要容器編排技術,可以將眾多機器抽象,對外呈現出一台超大機器。現在業界比較流行的有:k8s、mesos、docker swarm。

在業務發展初期只有幾個微服務,這時用 docker 就足夠了,但隨著業務規模逐漸擴大,容器越來越多,運維人員的工作越來越複雜,這個時候就需要編排系統解救opers。

應用程式的宣告週期

乙個成熟的容器編排系統需要具備以下能力:

如果你非要拿 docker 和 k8s 進行比較,其實你更應該拿 docker swarm 和 k8s 比較。

docker swarm 是 docker 自家針對集群化部署管理的解決方案,優點很明顯,可以更緊密整合到 docker 生態系統中。

雖說 swarm 是 docker 親兒子,但依舊沒有 k8s 流行,不流行很大程度是因為商業、生態的原因,不多解釋。

k8s是google研發的容器協調器,已捐贈給cncf,現已開源。

google 利用在容器管理多年的經驗和專業知識推出了 k8s,主要用於自動化部署應用程式容器,可以支援眾多容器化工具包括現在非常流行的docker。

目前k8s 是容器編排市場的領導者,開源並公布了一系列標準化方法,主流的公有雲平台都宣布支援。

一流的廠商都在搶占標準的制高點,一堆小廠商跟著一起玩,這就叫生態了。國內的大廠商都在幹嘛呢?搶社群**市場,玩資本遊戲,哎?!

k8s 由眾多元件組成,元件間通過 api 互相通訊,歸納起來主要分為三個部分:

k8s集群架構圖

docker 和 k8s 在業界非常流行,都已經是事實上的標準。

docker 是用於構建、分發、執行容器的平台和工具。

而 k8s 實際上是乙個使用 docker 容器進行編排的系統,主要圍繞 pods 進行工作。pods 是 k8s 生態中最小的排程單位,可以包含乙個或多個容器。

docker 和 k8s 是根本上不同的技術,兩者可以很好的協同工作。

(1)沒有 k8s 可以使用 docker 嗎?

可以。實際上一些小型公司,在業務不太複雜的情況下都是直接使用 docker。儘管 k8s 有很多好處,但是眾所周知它非常複雜,業務比較簡單可以放棄使用 k8s。

(2)沒有 docker 可以使用 k8s 嗎?

k8s 只是乙個容器編排器,沒有容器拿什麼編排?!

k8s 經常與 docker 進行搭配使用,但是也可以使用其他容器,如runc、containerted 等。

(3)docker swarm 和 k8s 怎麼選?

選 k8s。2023年底docker enterprise已經**給mirantis,mirantis宣告要逐步淘汰docker swarm,後續會將 k8s 作為預設編排工具。

docker 不香嗎?為什麼還要用 k8s

docker很香,但 k8s 在業務達到一定規模後也得啟用。學會了嗎?

5分鐘了解docker

一 概念 開源的應用容器引擎,打包開發者的應用及依賴包在乙個可移植的容器中,相當於沙箱。docker允許開發人員在單個作業系統上隔離和執行多個應用程式,而不是為伺服器上的每個應用程式專用乙個虛擬機器。這是通過將應用程式隔離在單獨的容器中來實現的,這些應用程式雖然被容器分隔開,但是卻可以共享作業系統和...

5分鐘帶你快速了解 SEO到底是什麼?

對於從事網際網路推廣營銷的人來說,seo 一定是個常出現的詞。不少人對 seo到底是什麼?還存在各種各樣的疑問和一些誤解,那麼下面就為大家講解一下關於seo的全面知識。一 seo是什麼?首先我們要明白,seo是什麼意思。seo是英文search engine optimization的縮寫,翻譯過來...

5分鐘快速部署Docker實戰

1.安裝docker.2.安裝tomcat.3.安裝nginx.名詞解釋 掛載 相當於本地的目錄做個快捷方式到虛擬機器的目錄裡 文章結尾提供以下內容的模板文件.一 安裝docker 1.按提示安裝,下一步下一步.輸入 docker run hello world 有訊息表示安裝成功.1.docker...