如何用Docker編排容器

2021-09-19 23:39:36 字數 2401 閱讀 1154

歡迎來到後硬體時代。在這個時代我們把容器或者是虛擬機器遷移到我們需要的地方,而不需要考慮容器或者虛擬機器。這裡我們介紹一些新的docker工具來做這份工作。

構建下一代應用是一回事,管理和執行它們是另一回事。

也許理解上面那句話的最好方式是通過乙個老的模擬:寵物 vs 奶牛。人們採用特別的方法使寵物存活並保持健康,管理員們用同樣的方式來小心照料高階伺服器以及它附帶的一切冗餘事物。但是在農場裡,一頭死去的奶牛依然是做生意成本的一部分。可是在今天雲的世界裡,應用的設計允許出現失敗,一台伺服器掛了也沒什麼大不了的。

現代應用編排工具的角色是監測成群的虛擬伺服器或容器並且確保它們在正確的農場漫步(譯者注:這裡作者把容器和虛機模擬奶牛,它們在農場漫步指虛機和容器能夠在基礎設施上正確有效地執行)。如果乙個主機死掉了,乙個新的虛擬機器甚至新的容器會被快速地例項化出來。例項化過程中根本就沒有管理員的干預,因為整個過程是自動的。你也不需要精確地知道哪一台主機或者容器或者它們的組合在執行你的應用程式。人們夢想實現it自動化已經很久了。終於,今天的一些工具開始兌現這個承諾。如果你正在使用雲級別的應用,尤其是需要擴充套件微服務應用,那麼這樣的工具對你很重要。

在下面的場景中,資料中心作業系統的想法正逐步實現:除了作為計算,儲存,網路的元素之外,單個伺服器不那麼重要。應用被繫結到虛擬機器或者容器並且成為主要的管理元素。與管理單個伺服器相反,我們要管理一整個資料中心:劃分資料中心來支援不同的應用程式,構建不需要知道底層硬體任何資訊的開發\測試\部署環境。它標識乙個新時代的開始,那些為特定工作負載配置硬體已經是過去的事情了。

乙個關鍵概念是編排:它指動態放置應用程式和服務,以充分利用現有計算資源。編排是分布式,自動化計算的重要工具。它通過應用的定義和程式集來決定主機的放置和工作負載,管理擴充套件以及確保失敗的主機和服務被正確處理。

雖然google的kubernetes和apache的mesos專案或許是最著名的編排解決方案,但是它們距離最終的解決方案相差還很遠。它們都是複雜的工具,需要在技能和資源上投入很多。它們是最好的應用大規模部署場景的工具。

另外,小部分企業已經遷移到提供編排服務的私有雲上,如microsoft,openstack或vmware提供的私有雲服務。但是,絕大多數組織依然在實驗交付下一代應用程式的過程和所需要的工具。

我們需要一系列工具,它們能實現從一或兩台主機擴充套件到一或兩架主機再到整個資料中

心。docker採用的方法是他們正在使用的一系列實現容器自動化的工具:machine,swarm和compose。

machine是docker自動化工具的心臟,因為它使建立,配置主機伺服器的過程自動化。它通過使用docker的api為你提供單獨的命令來建立主機伺服器,配置底層docker引擎並且設定客戶端工具。它還能夠附加乙個主機到已存在的swarm集群或者從原型建立乙個新的集群。除此之外,你可以在不同的雲**商上使用容器以及在你選擇的雲環境上用命令列設定主機。

一旦你實現了自動建立容器主機和啟動docker引擎,你可以使用swarm,一款docker集群管理工具,把這些主機集中到乙個計算組織中。swarm,使用相同的api作為標準docker引擎例項,被設計用來提供容器可擴充套件的環境。如果你已經在你的devops環境中執行docker, 你可以通過安裝swarm實現迅速擴充套件, 並繼續使用現有devops工具和流程。swarm有乙個內建的排程器分配容器到單個docker引擎節點,它還支援使用不同的策略來優化部署。

建立乙個swarm就像給現有集群增加乙個引擎一樣容易。你可以使用machine自動建立新的引擎或者使用docker的api獲得現有節點的索引。乙個選擇是使用docker hubregistry來簡化服務發現,就像swarm標識和管理已註冊的主機一樣。compose是一款更加複雜的工具。它使用yaml構建應用程式的描述,向我們展示乙個應用程式中的多個容器是如何相互連線的。yaml有很重要的意義,因為它詳細描述了你的引用程式,查閱yaml就像訪問像swagger上的api一樣詳細(譯者注:swagger是一款全球著名的api管理框架)。一旦你建立了應用程式的描述資訊和它的構建方式,剩下的只需要一行指令碼命令就能啟動應用了。

或許docker編排工具最有趣的方面是它的簡單。這三款工具(machine,swarm,compose)

都採用簡單的命令,所以它將jenkins或者puppet和chef這些環境管理工具指令碼化不再複雜。因為這三款工具是在現有docker api上構建的,所以他們讓分布式環境的管理和控制更容易,它們讓開發環境到生產環境的遷移大大簡化。docker的一些工具很適合作為資料中心的管理工具,就像kubernetes。這些工具也很適合與公有雲提供的工具協同工作。當你的應用程式從單伺服器的開發測試環境擴充套件到執行在azure或aws的全面雲服務上時,將machine,swarm和compose組合使用,你能夠更好地管理這些應用。即使應用程式在雲規模的mesos上執行,開發者們也不需要知道它們將容器交付到**,因為應用在被swarm配置後看起來像乙個swarm指令碼。這種抽象就是雲計算相關的。

Docker容器編排器概覽

起初的乙個挑戰是資料中心編排。與vmware vsphere不同,當時少有能在生產環境中大規模管理負載的工具,而docker用來在資料中心級別進行容器編排的主要方式是docker swarm。容器編排的解決方案一直不缺。apache mesosphere是早期的領頭羊,而現在的勢頭已經今非昔比。do...

容器編排系列 一 docker的安裝

前言 docker 是乙個開源的應用容器引擎。它擁有的沙盒性質,可以讓開發者打包自己的應用以及依賴包到乙個可移植的映象中,並發布到其他linux或windows環境中。在當今微服務橫行的時代下,了解docker對開發者或運維人員很有必要。一 使用的軟體與架構圖 linux centos 7.6.18...

容器編排技術

容器編排技術 兩台docker環境 docker compose 拖到 usr local bin cd usr local bin chmod x docker compose 以nginx為案列 寫資源建立模板 yaml格式 mkdir compose nginx cd compose ngin...