日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为什么Docker容器将占领世界

發(fā)布時間:2025/3/15 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么Docker容器将占领世界 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么Docker容器將占領(lǐng)世界

我加入了bieryun,主持了一個關(guān)于Docker的網(wǎng)絡(luò)研討會,以及您可以使用容器將傳統(tǒng)Windows應(yīng)用程序遷移到云端以及運行開源無服務(wù)器平臺。?

我分享了Docker容器啟用的最常用的用例。這些是公司目前在生產(chǎn)中所做的事情。以下是前五個場景,以及我在現(xiàn)場網(wǎng)絡(luò)研討會上對問答的所有答案。

將應(yīng)用遷移到云端

將現(xiàn)有工作負(fù)載遷移到云曾經(jīng)是IaaS和PaaS之間的選擇。PaaS選項意味著將您的應(yīng)用程序的要求與您選擇的云的產(chǎn)品目錄相匹配,并采用包含所有托管服務(wù)的組件的新架構(gòu):

這有利于運營成本和效率,但需要一個項目才能實現(xiàn) - 您需要更改代碼并運行完整的回歸測試套件。當(dāng)你上線時,你只能在一個云上運行,所以如果你想要多云或混合云,它將需要另一個項目。

另一種選擇是IaaS,這意味著在云中租用虛擬機(jī)。由于您只需要啟動一組VM并使用現(xiàn)有的部署工件和工具來部署應(yīng)用程序,因此初始工作量較少:

但是,將VM環(huán)境從數(shù)據(jù)中心復(fù)制到云只意味著要復(fù)制所有運營和基礎(chǔ)架構(gòu)的低效率。你仍然需要管理你的所有虛擬機(jī),而且它們?nèi)匀淮罅课闯浞掷?#xff0c;但現(xiàn)在你有一個月度賬單顯示它的效率是多么低效。

新方法是首先將應(yīng)用程序移動到容器,然后在云中運行它們。您可以使用現(xiàn)有的部署工件來構(gòu)建Docker容器映像,因此您無需更改代碼。如果您可以將部署腳本編寫到Dockerfile中,那么您可以容納幾乎任何東西 - 它可能是一個已有15年歷史的.NET 2.0應(yīng)用程序或去年的Node.js應(yīng)用程序:

Docker化應(yīng)用程序在任何地方都以相同的方式運行,因此開發(fā)人員可以使用Docker Desktop在本地運行整個堆棧。您可以使用Docker Enterprise在數(shù)據(jù)中心或云中運行它們,也可以選擇云提供商的容器服務(wù)。這些應(yīng)用程序現(xiàn)在可以移植,運行速度遠(yuǎn)遠(yuǎn)超過虛擬機(jī),并使用最新的操作系統(tǒng),所以這是擺脫Windows Server 2003和2008的好方法,很快就會失去支持。

提供云原生應(yīng)用程序

從初創(chuàng)企業(yè)到大型企業(yè),人們都看到了新型應(yīng)用程序架構(gòu)帶來的好處。所述云本地計算基礎(chǔ)(CNCF)定義了這些類型的應(yīng)用程序作為具有微服務(wù)的設(shè)計,在容器中運行,并且由容器平臺動態(tài)管理。

云原生應(yīng)用程序可高效運行并輕松擴(kuò)展。它們是自我修復(fù)的,因此應(yīng)用程序和基礎(chǔ)架構(gòu)問題不會導(dǎo)致停機(jī)。它們旨在支持快速,增量更新。在容器中運行的微服務(wù)可以獨立更新,因此可以推出對產(chǎn)品目錄服務(wù)的更改,而無需測試支付服務(wù),因為支付服務(wù)不會更改:

這個架構(gòu)來自GitHub上的微服務(wù) - 演示示例,它都打包在容器中運行,因此您可以在筆記本電腦上啟動整個堆棧。它使用一系列編程語言和數(shù)據(jù)庫作為每個組件的最佳選擇。

現(xiàn)代化傳統(tǒng)應(yīng)用程序

您可以在同一群集上的Docker容器中運行現(xiàn)有應(yīng)用程序和新的云原生應(yīng)用程序。它也是一個發(fā)展遺留應(yīng)用程序的絕佳平臺,因此它們的外觀和感覺更像是云原生應(yīng)用程序,而且您可以在沒有2年重新架構(gòu)項目的情況下完成。首先將應(yīng)用程序遷移到Docker。此示例適用于單個ASP.NET Web應(yīng)用程序和SQL Server數(shù)據(jù)庫:

現(xiàn)在,您可以開始從整體中斷出功能并在單獨的容器中運行它們。版本2可以使用反向代理來引導(dǎo)現(xiàn)有monolith與在單獨容器中運行的新應(yīng)用程序主頁之間的流量:

這是一個簡單的模式,用于分解Web UI而無需更改原始整體中的代碼。對于下一個版本,您可以打破應(yīng)用程序的內(nèi)部功能,并將其作為在另一個容器中運行的REST API公開:

這些新組件完全獨立于原始組件。你可以使用你喜歡的任何技術(shù)堆棧。每個功能都可以有自己的發(fā)布節(jié)奏,您可以按需要的比例運行每個組件。

技術(shù)創(chuàng)新:無服務(wù)器

到目前為止,您已經(jīng)在同一群集上的Docker容器中運行了遺留應(yīng)用程序,云原生應(yīng)用程序和不斷發(fā)展的單塊。您以相同的方式構(gòu)建,打包,分發(fā),運行和管理所有應(yīng)用程序的所有組件。您的整個應(yīng)用程序環(huán)境都在一個安全,現(xiàn)代和開放的平臺上運行。

它并沒有就此結(jié)束。可以使用相同的平臺來探索技術(shù)創(chuàng)新。無服務(wù)器是一種很有前途的新部署模型,它由容器驅(qū)動。AWS Lambda和Azure功能是專有實現(xiàn),但是有許多開源無服務(wù)器框架可以在數(shù)據(jù)中心或云中與Docker一起部署:

所述CNCF無服務(wù)器工作組定義的當(dāng)前選擇的通用架構(gòu)和管道的過程。如果您對無服務(wù)器模型感興趣,但是您在本地或跨多個云運行,那么開放框架是一個很好的選擇。Nuclio很容易上手,它在與其他應(yīng)用程序相同的平臺上的Docker容器中運行。

流程創(chuàng)新:DevOps

下一個重大創(chuàng)新是DevOps,它旨在打破構(gòu)建軟件的團(tuán)隊和運行軟件的團(tuán)隊之間的障礙,目標(biāo)是更快地將更好的軟件推向市場。DevOps更多的是關(guān)于文化和流程,而不是軟件,但如果你仍在使用相同的技術(shù)和工具,很難做出有影響力的改變。

CALMS是一個很好的框架,用于理解DevOps轉(zhuǎn)換中要關(guān)注的領(lǐng)域。它是關(guān)于文化,自動化,精益,指標(biāo)和共享的關(guān)鍵部分。如果您通過技術(shù)變革為其提供支持,那么在這些領(lǐng)域取得進(jìn)展并量化成功要容易得多。采用容器支撐該框架:

當(dāng)團(tuán)隊使用相同的工具并使用相同的語言時,將團(tuán)隊整合在一起要容易得多 - Dockerfiles和Docker Compose文件與應(yīng)用程序源代碼一起使用,并由Dev和Ops共同擁有。它們提供了共同合作的共同點。?

自動化是Docker的核心。手動制作容器要比使用Dockerfile自動化容器要困難得多。將應(yīng)用程序分解為小型單元支持精簡,您可以將指標(biāo)烘焙到所有這些組件中,以便為您提供一致的方法來監(jiān)控不同類型的應(yīng)用程序。Docker Hub可以輕松共享,其中有數(shù)十萬個應(yīng)用程序打包為Docker鏡像。

網(wǎng)絡(luò)研討會問答

我們在會議結(jié)束時提出了很多問題,沒有足夠的時間來回答這些問題。以下是錯過的問題。

?

問:你說你可以在你的筆記本電腦上運行你的投票應(yīng)用程序,但它是Linux和Windows容器的混合體。這不會有用嗎?

答:不,你不能在一臺機(jī)器上運行Linux和Windows容器的混合體。您需要有一個運行Docker Swarm的集群,其中包含Linux和Windows服務(wù)器的混合體。示例投票應(yīng)用程序具有不同的版本,因此它可以在所有Linux,全Windows或混合環(huán)境中運行。

?

問:使用Docker容器從源代碼編譯[你的應(yīng)用程序]是什么?在這種情況下MSBuild?

答:是的,您編寫了一個多階段Dockerfile,其中第一階段編譯您的應(yīng)用程序。該階段使用已部署工具集的Docker鏡像。Microsoft擁有.NET Framework SDK映像和.NET Core映像,還有其他平臺(如Go和Maven for Java)的官方Docker映像。您可以構(gòu)建自己的SDK映像并打包所需的任何工具。

?

問:如果群集中安裝了遺留應(yīng)用程序,我們?nèi)绾问褂肈ocker swarm或Kubernetes維護(hù)粘性會話?

答:您的群集節(jié)點上將有一個負(fù)載平衡器,因此流量可以進(jìn)入任何服務(wù)器,然后您可以在該服務(wù)器上運行多個容器。Docker Swarm或Kubernetes都沒有為開箱即用的容器提供會話親和性,但你可以通過運行像Traefik這樣的反向代理或者像Nginx這樣的Kubernetes的會話感知入口控制器來實現(xiàn)。

?

問:在桌面上進(jìn)行測試時,不同的操作系統(tǒng)要求如何工作?(例如,某些容器需要Linux,有些需要Windows,而Mac則用于開發(fā))

答:容器非常有效,因為它們使用運行它們的主機(jī)的底層操作系統(tǒng)。這意味著Linux容器需要在Windows主機(jī)上的Linux主機(jī)和Windows容器上運行。Docker Desktop使這一切變得簡單 - 它為您提供和管理Linux VM。Docker Desktop for Mac只允許您運行Linux容器,但Docker Desktop for Windows支持Windows和Linux。

?

問:IDE如何適應(yīng)Docker(例如,確保所有開發(fā)團(tuán)隊成員都使用兼容的IDE配置)?

答:使用Docker從源代碼編譯和打包應(yīng)用程序的好處在于人們使用的IDE無關(guān)緊要。當(dāng)開發(fā)人員在本地測試應(yīng)用程序時,他們將使用具有CI使用的相同構(gòu)建腳本的Docker容器來構(gòu)建和運行它。因此構(gòu)建是一致的,團(tuán)隊不需要使用相同的IDE - 人們可以在同一個項目中使用Visual Studio,VS Code或Rider。

?

問:如何協(xié)調(diào)Windows容器的最佳方法?

答:現(xiàn)在只有Docker Swarm支持生產(chǎn)中的Windows節(jié)點。您可以將多個Windows服務(wù)器與Docker Swarm一起加入,或者使用Docker Enterprise配置混合的Linux-Windows群集。預(yù)計到2018年底,Kubernetes將支持Windows節(jié)點。

?

問:我是否需要管理程序來管理我的Docker環(huán)境運行的底層硬件?更好的是,使用Docker是否可以滿足對VMware的需求?

答:Docker可以在裸機(jī)或VM上運行。生產(chǎn)Docker服務(wù)器只安裝了最小的操作系統(tǒng)(比如Ubuntu Server或Windows Server Core)和Docker。

?

問:在容器中運行的SQL Server可以使用Windows身份驗證嗎?

答:是的。默認(rèn)情況下,容器不是域加入的,但您可以使用憑據(jù)規(guī)范運行它們,這意味著它們可以使用組管理的服務(wù)帳戶的憑據(jù)訪問AD。

?

問:對于舊的Eclipse IDE依賴,在容器內(nèi)構(gòu)建/編譯Java的任何建議嗎?

答:您需要在沒有任何IDE的情況下通過腳本構(gòu)建應(yīng)用程序。如果您可以遷移構(gòu)建以使用Maven(例如),那么您可以在Dockerfile中使用Maven設(shè)置構(gòu)建和打包。

?

問:那么,服務(wù)器必須擁有容器所需的所有應(yīng)用程序?如果服務(wù)器沒有容器需要的應(yīng)用程序,會發(fā)生什么?

A.不,恰恰相反!Docker鏡像是包含容器所需內(nèi)容的包。因此,Docker鏡像中的ASP.NET應(yīng)用程序?qū)惭b.NET Framework,IIS和ASP.NET,并且您不需要在運行容器的服務(wù)器上安裝任何這些組件。?

?

問:如果您需要多種技術(shù)來運行應(yīng)用程序,如何在單個包中創(chuàng)建支持它們的Docker鏡像?如果您需要一個不易獲得的特定技術(shù)堆棧呢?

答:您的應(yīng)用程序映像需要安裝應(yīng)用程序的所有先決條件。您可以使用現(xiàn)有圖像,如果它可以為您提供所需的一切或構(gòu)建自己的圖像。只要您可以編寫腳本,就可以將其放在Dockerfile中 - 因此Windows Dockerfile可以使用Chocolatey來安裝依賴項。

?

問:Docker如何決定哪些庫/運行時將成為容器的一部分?它如何劃分OS和其他運行時?

A. Docker沒有決定。這取決于構(gòu)建應(yīng)用程序映像的人。目標(biāo)是使您的應(yīng)用程序?qū)嶋H需要的依賴項盡可能地使您的運行時映像盡可能小。這為您提供了更小的攻擊表面區(qū)域,并縮短了構(gòu)建和部署的時間。

總結(jié)

以上是生活随笔為你收集整理的为什么Docker容器将占领世界的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。