概念:
官方定義1:Docker是一個(gè)開源的應(yīng)用容器引擎,開發(fā)者可以打包他們的應(yīng)用及依賴到一個(gè)可移植的容器中瓢棒,發(fā)布到流行的Linux機(jī)器上祷膳,也可實(shí)現(xiàn)虛擬化。
官方定義2:k8s是一個(gè)開源的容器集群管理系統(tǒng)乃戈,可以實(shí)現(xiàn)容器集群的自動化部署褂痰、自動擴(kuò)縮容、維護(hù)等功能症虑。
docker和k8s的產(chǎn)生
docker一般是和傳統(tǒng)的虛擬技術(shù)對比
傳統(tǒng)的虛擬技術(shù):將物理硬件虛擬成多套硬件后缩歪,需要在每套硬件上都部署一個(gè)操作系統(tǒng),接著在這些操作系統(tǒng)上運(yùn)行相應(yīng)的應(yīng)用程序谍憔,非常重匪蝙。
docker:Docker容器內(nèi)的應(yīng)用程序進(jìn)程直接運(yùn)行在宿主機(jī)(真實(shí)物理機(jī))的內(nèi)核上主籍,Docker引擎將一些各自獨(dú)立的應(yīng)用程序和它們各自的依賴打包,相互獨(dú)立直接運(yùn)行于未經(jīng)虛擬化的宿主機(jī)硬件上骗污,同時(shí)各個(gè)容器也沒有自己的內(nèi)核崇猫,顯然比傳統(tǒng)虛擬機(jī)更輕便。
K8s:每個(gè)集群有多個(gè)節(jié)點(diǎn)需忿,每個(gè)節(jié)點(diǎn)可創(chuàng)建多個(gè)容器诅炉,kuberbete就是管理這些應(yīng)用程序所在的小運(yùn)行環(huán)境(container)而生。
docker和k8s的區(qū)別
在一般的認(rèn)知中屋厘,Kubernetes 和 Docker 是互補(bǔ)關(guān)系:
- Dockers 屬于下層——容器引擎涕烧;
- Kubernetes 屬于上層——編排調(diào)度層。
Docker 源于 Linux Container汗洒,可以將一臺機(jī)器的資源分成 N 份容器议纯,做到資源的隔離,并將可運(yùn)行的程序定義為標(biāo)準(zhǔn)的 docker image溢谤;Kubernetes 則可以把不同機(jī)器的每份容器進(jìn)行編排瞻凤、調(diào)度,組成分布式系統(tǒng)世杀。
適用場景
近幾年阀参,Kubernetes 已經(jīng)成為自有機(jī)房、云上廣泛使用的容器編排方案瞻坝,最廣泛的使用方式是 Kubernetes+Docker蛛壳。從 DevOps 人員的角度,一面用 kubectl 命令所刀、k8s API 來操作集群衙荐,一面在單機(jī)用 docker 命令來管理鏡像、運(yùn)行鏡像浮创。
單獨(dú)用 docker 的情況忧吟,在一些公司的場景里面也是有的。一種場景是“只分不合”蒸矛,把一臺機(jī)器用 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