docker和k8s的關系

概念:
官方定義1:Docker是一個開源的應用容器引擎,開發者可以打包他們的應用及依賴到一個可移植的容器中,發布到流行的Linux機器上,也可實現虛擬化。
官方定義2:k8s是一個開源的容器集群管理系統,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。

docker和k8s的產生

docker一般是和傳統的虛擬技術對比
傳統的虛擬技術:將物理硬件虛擬成多套硬件后,需要在每套硬件上都部署一個操作系統,接著在這些操作系統上運行相應的應用程序,非常重。

docker:Docker容器內的應用程序進程直接運行在宿主機(真實物理機)的內核上,Docker引擎將一些各自獨立的應用程序和它們各自的依賴打包,相互獨立直接運行于未經虛擬化的宿主機硬件上,同時各個容器也沒有自己的內核,顯然比傳統虛擬機更輕便。

K8s:每個集群有多個節點,每個節點可創建多個容器,kuberbete就是管理這些應用程序所在的小運行環境(container)而生。

docker和k8s的區別

在一般的認知中,Kubernetes 和 Docker 是互補關系:

  • Dockers 屬于下層——容器引擎;
  • Kubernetes 屬于上層——編排調度層。

Docker 源于 Linux Container,可以將一臺機器的資源分成 N 份容器,做到資源的隔離,并將可運行的程序定義為標準的 docker image;Kubernetes 則可以把不同機器的每份容器進行編排、調度,組成分布式系統。

適用場景

近幾年,Kubernetes 已經成為自有機房、云上廣泛使用的容器編排方案,最廣泛的使用方式是 Kubernetes+Docker。從 DevOps 人員的角度,一面用 kubectl 命令、k8s API 來操作集群,一面在單機用 docker 命令來管理鏡像、運行鏡像。

單獨用 docker 的情況,在一些公司的場景里面也是有的。一種場景是“只分不合”,把一臺機器用 docker 做資源隔離,但是不需要將多容器“編排”。

[1] https://xie.infoq.cn/article/3b9f38da1d4bf49d56d1d1938
[2] https://www.cnblogs.com/softidea/p/12803655.html
[3] https://zhuanlan.zhihu.com/p/87186261
[4] https://cloud.tencent.com/developer/article/1688212

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容