-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
docker微信機器人
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于docker微信機器人的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、k8s和docker區(qū)別是什么?
k8s和docker區(qū)別有以下幾點:
1、k8s是一種開放源碼的容器集群管理系統(tǒng),能夠實現(xiàn)自動化部署、擴展容器集群、維護等功能。
2、Docker是一種開放源碼的應用容器引擎,開發(fā)者可以將他們的應用和依賴打包在一個可移植的容器中,發(fā)布到流行的Linux機器上,也可以實現(xiàn)虛擬化。
3、k8s的全稱kubernetes。它是一個完整的分布式系統(tǒng)支撐平臺,集群管理功能齊全。Kubernetes同時提供完善的管理工具,涵蓋了開發(fā)、部署、測試、運行監(jiān)控等各個環(huán)節(jié)。
4、Docker是一種開放源碼的應用容器引擎,允許開發(fā)人員將其應用和依賴包打包成可移植的鏡像,然后發(fā)布到任何流行的Linux或Windows機器上,也能實現(xiàn)虛擬化。該容器完全使用沙箱機制,彼此之間沒有任何接口。
二、docker 和 k8s 面試總結
花了大半個月對k8s&docker進行了梳理,包括之前讀過的書,官方文檔以及k&d在公司項目的實踐等。
以下是個人對docker & k8s 面試知識點的總結:
1 docker
常見面試題如下 每一點可根據(jù)回答進行適當深入
1.1 什么是docker
docker和傳統(tǒng)linux的差異?
容器和鏡像的區(qū)別?
如何理解docker的緩存機制?
1.2 docker 網(wǎng)絡模型是什么?有何局限
docker的網(wǎng)絡基礎是什么?
docker的網(wǎng)絡模型是?有什么局限?
docker如何實現(xiàn)容器間通信的?
1.3 docker 基礎命令
cmd和entryPoint差異?
copy和add的差異?
簡單講下swam/compose?
2 kubernetes
常見面試題如下 每一點可根據(jù)回答進行適當深入
2.1 什么是k8s?
1 為什么用k8s 解決了什么問題?
2 k8s有哪些組件,有什么作用?【同:Master節(jié)點和Node節(jié)點都用哪些組件】
3 可以簡單說下Node Pod container 之間的關系嗎? 【可引入2.2/2.3對Pod SVC的考察】
4 什么是SVC可以簡單描述下嗎?【可引入2.3對SVC的考察】
5 可以簡單講下k8s的網(wǎng)絡模型嗎?
6 Pod SVC Node Container 之間如何相互訪問
7 swarm和k8s如何選擇?
2.2 考察Pod
靜態(tài)Pod和普通Pod的差異?
簡單講下Pod的生命周期重啟策略呢?
- 不同組件對Pod的重啟策略要求一樣嗎?
如何檢查Pod的健康狀態(tài)?哪2種探針?
- 2種探針的實現(xiàn)方式
簡單說下Pod的調度方式?
2.3 考察SVC
SVC有哪4種類型
2.4 k8s網(wǎng)絡模型
DNS和Iptables在k8s中的運用?有何差異
- k8s如何解決多機器部署容器的網(wǎng)絡問題?
Pod SVC Node Container 之間如何相互訪問
3 參考答案
答案是根據(jù)所在公司項目結合自己的理解給出的答案 不一定完全準確但在面試中要做到有理有據(jù)突出自己的思路即可。
4 docker
問題和答案 如下
4.1 什么是docker?
通常問這個問題主要在于考察候選人是否真正了解過docker,很多人項目中都有用到docker,真正去了解過概念,架構的不多。從而來辨別簡歷上的熟悉/了解docker的水分。
如果這個都無法回答,那么接下來的docker考察也就毫無意義了,此問題通常也會結合以下問題來進行考察。
docker和傳統(tǒng)linux的差異?
docker都有哪些核心組件?
可以簡單說下docker的架構嗎?
容器和鏡像的區(qū)別?
docker是什么: Docker是一個可以把開發(fā)的應用程序自動部署到容器的開源引擎。
docker和VM差異: docker是一個應用層的抽象,容器之間通過網(wǎng)絡命名空間進行隔離,多個容器共享同一個操作系統(tǒng)內核。VM是對物理硬件層的抽象,每個VM都包含獨立的操作系統(tǒng),重且啟動緩慢。VM主要為了提供系統(tǒng)環(huán)境,容器主要是為了提供應用環(huán)境。
docker組件: docker引擎【包含Docker客戶端&服務端】,docker鏡像,docker容器,Registry【鏡像倉庫】
docker的架構: C/s架構
容器和鏡像的區(qū)別: 鏡像是一個只讀模板,包括運行容器所需的數(shù)據(jù),其內容在構建之后就不會被改變,可以用來創(chuàng)建新的容器。 鏡像由多個只讀層組成,容器在只讀層的基礎上多了一個讀寫層。
4.2 docker 網(wǎng)絡模型是什么?有何局限
這里也經(jīng)常會結合K8s網(wǎng)絡原理進行考察,以及如下幾個考點
docker的網(wǎng)絡基礎是什么?
docker的網(wǎng)絡模型是?有什么局限?
docker如何實現(xiàn)容器間通信的?
Docker網(wǎng)絡基礎: Docker是在操作系統(tǒng)層上對應用的抽象,使用網(wǎng)絡命名空間來對不同容器之間進行網(wǎng)絡隔離,用Veth設備對來進行容器之間的通訊。
docker的網(wǎng)絡模型: 有4種網(wǎng)絡模型 分別是Bridge Container host none 默認使用bridge網(wǎng)絡模型,容器的初次啟動會虛擬化出來一個新的網(wǎng)卡名為docker0,在多機器部署下docker0地址可能會沖突。所以docker對多機部署支持的不夠友好。
4.3 docker 基礎命令
出現(xiàn)頻率較高的為以下幾條命令的考察
cmd和entry差異?
copy和add的差異?
docker-compose & docker swarm?
CMD & ENTRYPONIT
都是容器操作指令:
CMD 用于指定容器啟動時候默認執(zhí)行的命令??梢员籨ocker run指定的啟動命令覆蓋。ENTRYPONIT 指令可讓容器以應用程序或者服務的形式運行。一般不會被docker run指定的啟動命令覆蓋。dockerfile中的多個CMD & ENTRYPONIT只有最后一個會生效。
注意區(qū)別docker run 和RUN 一個是容器啟動命令,一個是鏡像構建時候所用。
copy & add
ADD & COPY 選取目標文件復制到鏡像當中。是針對鏡像的指令,唯一差別在于add源文件可以支持url且可以對壓縮文件進行解壓操作。而copy針對的是當前構建環(huán)境。
docker-compose & docker swarm
使用Docker compose可以用YAML文件來定義一組需要啟動的容器,以及容器運行時的屬性。docker-compose用來對這一組容器進行操作。
docker swarm 原生的Docker集群管理工具,依賴docker本身,很多重要功能依賴團隊二次開發(fā)。且社區(qū)不夠活躍,一般公司生產環(huán)境會選擇k8s,個人項目或者容器數(shù)量較少可選swarm,只需要docker即可完成,相對較輕。
5 kubernetes
5.1 什么是k8s?
對k8s的考察一般逃不過這樣入門級的問題,針對入門級的問題,面試官可能也會針對如下幾個點進行考察,在候選人答出來的基礎上,選擇其中一個進行深入。
為什么用k8s 解決了什么問題?
k8s有哪些組件,有什么作用?
可以簡單說下Node Pod container 之間的關系嗎? 【進一步可對Pod SVC細節(jié)進行考察】
什么是SVC可以簡單描述下嗎?【可引對SVC的考察】
可以簡單講下k8s的網(wǎng)絡模型嗎?【可以和docker網(wǎng)絡模型結合考察】
Pod SVC Node Container 之間如何相互訪問【衍生 外部環(huán)境如何訪問k8s】
swarm和k8s如何選擇?
1 什么是k8s 為什么用k8s:
一個開源的容器集群管理平臺【容器編排工具】,可提供容器集群的自動部署,擴縮容,維護等功能。分為管理節(jié)點Master和工作節(jié)點Node。在我們的項目中主要解決了環(huán)境一致性的問題,通過CI/CD使得運維部署變得簡單起來,以及自動部署,故障監(jiān)控,自動擴縮容??梢蕴嵘_發(fā)效率。
2 k8s有那些組件:
etcd保存了整個集群的狀態(tài);
apiserver提供了資源操作的唯一入口,并提供認證、授權、訪問控制、API注冊和發(fā)現(xiàn)等機制;
controller manager負責維護集群的狀態(tài),比如故障檢測、自動擴展、滾動更新等;
scheduler負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上;
kubelet負責維護容器的生命周期,同時也負責Volume(CVI)和網(wǎng)絡(CNI)的管理;
Container runtime負責鏡像管理以及Pod和容器的真正運行(CRI);
kube-proxy負責為Service提供cluster內部的服務發(fā)現(xiàn)和負載均衡;
3 Node&Pod&container之間的關系:Node一般指工作節(jié)點包含多個Pod Pod中包含多個Container,Pod中的container共享同一個網(wǎng)絡命名空間。
4 什么是SVC: SVC是對一組功能相似的Pod資源的抽象,相當于一組服務的負載均衡。
5 k8s的網(wǎng)絡模型:IP-Per-Pod 每個Pod有獨立的Ip地址,無論是否處于同一個Node節(jié)點,Pod可以通過IP相互訪問,且Pod和容器的地址和外部看到的地址是同一個地址。
6 Pod SVC Node Container 之間如何相互訪問:
同Pod內的容器:同一個Pod的容器共享同一個網(wǎng)絡命名空間可以直接進行通訊
同Node內不同Pod的容器:多個Pod都關聯(lián)在同一個Docker0網(wǎng)橋上,通過docker0網(wǎng)橋完成相互通訊。
不同Node內Pod的容器:不同Node上的docker0可能會相同,PodIP和docker0是同網(wǎng)段的,所以需要將PodIP和NodeIP進行關聯(lián)且保障唯一,不同Pod之間的數(shù)據(jù)通過物理機的端口進行轉發(fā)即可完成通訊。
7: k8s 和docker swarm如何選擇: :
5.2 對SVC的考察
SVC是k8s中的核心概念 這里涉及知識點眾多 常見的面試考點如下
什么是SVC? 如何創(chuàng)建SVC?
使用SVC創(chuàng)建多個副本和使用RC創(chuàng)建多個副本有什么差異?
SVC有哪幾種類型?
SVC 負載分發(fā)策略有那些?
集群外如何訪問SVC?
SVC: 是對一組功能相似的Pod資源的抽象,相當于一組服務的負載均衡??梢允褂门渲梦募姆绞絼?chuàng)建也可以使用命令創(chuàng)建kubectl expose
SVC和RC提供服務的差距: RC創(chuàng)建的服務PodIP可能會變。SVC提供的clusterIP不會。通過Iptables的NAT轉換重定向到本地端口,在均衡到后端Pod。
svc的幾種類型: ClusterIp/NodePort/LoadBalancer/ExternalName
ClusterIp 默認類型 分配的一個虛擬地址,內部可以相互訪問,外部不行
NodePort 將SVC端口號映射到物理機
LoadBalancer 基于NodePort,云服務商在外部創(chuàng)建了一個負載均衡到Pod
ExternalName 將外部地址經(jīng)過集群內部的再一次封裝(實際上就是集群DNS服務器將CNAME解析到了外部地址上),實現(xiàn)了集群內部訪問即可。
svc負載分發(fā)策略: RoundRobin/SessionAffinity/自定義實現(xiàn)【基于標簽選擇器】
集群外部訪問: 端口映射到物理機即可
5.2 Pod考察
Pod和靜態(tài)Pod的區(qū)別
生命周期和重啟策略 【這里可擴展 不同控制器對Pod的重啟策略要求】
Pod如何健康檢查?
Pod的調度方式?【擴展調度算法】
Pod如何擴縮容?【擴展 RC和RS的差異】
答案
待補充 --詳見 《k8s權威指南》讀書筆記
5.3 基礎原理類考察
主要考察對基本組件的理解 和原理分析
API Server
Controller Manager【Replication Controller/Node Controller/ResourceQuota Controller/Namespace Controller/SVC Controller& Endpoint Controller】
Scheduler
Kubelet 【Pod健康檢查 資源監(jiān)控】
Kube-Proxy
k8s-DNS & Iptables差異
k8s中Ingress是什么
簡述k8s中的如下屬性及其作用resources tolerations affinity
k8s中pod、rs、deployment、hpa的基本概念,以及他們之間的關系
答案
待補充 --詳見 《k8s權威指南》讀書筆記
5.4 網(wǎng)絡原理類考察
主要考察對基本組件的理解 和原理分析
k8s的網(wǎng)絡模型是什么?
Docker的網(wǎng)絡基礎是什么?
Docker的網(wǎng)絡模型和局限?
k8s的網(wǎng)絡組件之間是如何通訊的?
外部如何訪問k8s集群?
有那些開源組件支持k8s網(wǎng)絡模型?
三、如何理解LXC與Docker之間的主要區(qū)別
Docker不是lxc的一個替代方案?!發(fā)xc”是指linux內核(尤指命名空間以及Cgroup)的一個特性,它允許其他一些沙盒進程運行在一塊相對獨立的空間,并且能夠方便的控制他們的資源調度。而基于底層的內核特性的基礎上,Docker在上層構建了一個更高層次的具備多個強大功能的工具集:可移植的跨機器部署。Docker定義了一個將應用打包的規(guī)范,而它的所有依賴都被封裝到了一個簡單對象里,它可以被傳輸?shù)饺我庖慌_能運行Docker的機器,并且在這里啟動Docker的實例之后,它能夠確保承載應用的執(zhí)行環(huán)境將會與之前所定義的完全一致。Lxc實現(xiàn)了進程級的沙盒封裝,它是可移植部署的一個重要前提,但是要想實現(xiàn)可移植部署,僅僅是這樣可還不夠。如果你發(fā)送給我一份安裝到一個自定義LXC配置下的應用副本,那么幾乎可以肯定的是,它在我的機器上運行的結果不會跟你的完全一樣,因為它綁定了你機器的一些特殊配置:網(wǎng)絡,存儲,日志,Linux發(fā)行版本等等。Docker為這些機器的特定配置定義了一個抽象層,所以它使得這些相同的Docker容器能夠一成不變的運行在多個不同的主機上,甚至帶上各種不同的配置。以應用為中心。相對于機器而言,Docker被用于優(yōu)化應用的部署過程。這可以從它的API,UI,設計理念還有文檔里得到體現(xiàn)。反之,lxc的輔助腳本專注在把容器作為一個輕量級的機器使用——基本上就是一堆啟動更快并且內存需求更小的服務器。我們認為容器技術的內容遠遠不止這些。自動構建。Docker為開發(fā)人員引入了一個可以用來把他們的源代碼自動打包到容器里的工具,并且他們能夠對于應用的依賴,構建工具,打包服務等有著完全的自主掌控能力。他們能夠自由的使用make,maven,chef,puppet,salt,debian包,rpm包,源碼包,或者任意以上的結合,而無需關心機器本身的配置。版本化。Docker引入了一個類似git的特性來完成一個容器的連續(xù)版本追蹤,版本之間的差異diff,新的版本的提交,回滾等。歷史記錄信息里也包含了容器的用戶信息以及他是如何構建它的,因此生產環(huán)境的服務器你都有充足的手段去一步步的定位到最上游的開發(fā)人員。Docker也實現(xiàn)了一個增量上傳和下載功能,類似于gitpull,所以更換到新版本的容器只需要傳輸增量部分就行。組件的重用。任意容器都能用作“基礎鏡像”來創(chuàng)建更特定的組件。這可以手工完成也可以做成自動構建的一部分。例如,你可以準備一個理想的python環(huán)境,并且把它用作10個不同的應用的基礎鏡像。你所定義的標準postgresql設置可以被將來你手上的所有項目重用。諸如此類。共享。Docker有權訪問一個公共的注冊中心(/)而這里有數(shù)以千計的業(yè)界人士上傳各種各樣有價值的容器:任一從redis,couchdb,postgres到ircbouncers再到rails應用服務器,Hadoop甚至是多個發(fā)行版本的基礎鏡像。該注冊中心也包含了一個官方的“標準庫”,這里提供了一些由Docker官方團隊維護的實用容器。注冊中心本身也是開源的,所以任何人都能部署他們自己的私有注冊中心來存儲和下發(fā)私有容器,例如用于內網(wǎng)服務器的部署。工具生態(tài)圈。Docker定義了一個API來自動化和個性化的創(chuàng)建和部署容器。也因此催生了眾多的工具集成到Docker,為之提供一些擴展特性。類PaaS的部署(Dokku,Deis,F(xiàn)lynn),多節(jié)點編排(maestro,salt,mesos,openstacknova),管理看板(docker-ui,openstackhorizon,shipyard),配置管理(chef,puppet),持續(xù)集成(jenkins,strider,travis)等等。Docker正在迅速的建立以它本身為標準的基于容器的工具生態(tài)圈。
四、如何使用docker 進行開發(fā)
Docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)。
以上就是關于docker微信機器人相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。
推薦閱讀: