




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Docker容器技術與應用湖北輕工職業技術學院Docker編排工具項目5項目背景隨著容器技術的飛速發展,Docker成為應用部署的熱門選擇。但單個容器難以滿足復雜業務需求,多容器協作成為常態。在此背景下,如何高效管理容器生命周期和部署復雜工作負載成為關鍵。Docker編排工具項目5
Docker平臺及周邊生態系統提供了很多工具來管理容器的生命周期。容器編排工具將生命周期管理能力擴展到可在集群上部署復雜的、多容器的工作負載。本項目通過兩個任務介紹了Compose編排工具和Swarm編排工具的使用方法。項目五:Docker編排工具目錄任務5.1、Compose編排工具的使用任務5.2、Swarm編排工具的使用Compose編排工具的使用回顧1、了解容器編排的管理方法。2、Compose編排工具的使用方法。知識目標了解容器集群的管理方法。了解容器集群的基本使用方法。能力目標掌握Swarm編排工具的管理方法。掌握Swarm編排工具的使用方法素質目標培養勇于探索、尊重科學的精神。鍛煉溝通交流的能力。工程師小王在對Docker技術進行學習后發現,當有大量Docker容器需要跨主機部署時,Swarm工具能夠更高效地完成部署工作,于是公司安排小王編寫Swarm工具的安裝及使用手冊,以供公司相關技術人員學習,并在公司內部推廣該技術。任務5.2Swarm編排工具的使用任務要求5.2Swarm工具
如果項目是基于單個Docker主機的,那么所有容器都是運行在同一個主機上的,但單個Docker能發揮的作用畢竟有限,也不便于管理,實際生產環境往往會有多個Docker主機,涉及跨主機多子網的容器配置管理,復雜性大大提高,所以Docker集群(Cluster)功能才能發揮其強大的技術優勢。容器集群的設計目標是在主機集群之間提供一個能夠自動化部署擴容,以及運維的應用容器平臺。DockerCompose支持多個服務的編排,但不支持跨主機部署,而集群將多個主機作為一個協同工作的有機整體,使其能夠像單個系統那樣工作,同時支持高可用、負載平衡和并行處理的功能。在集群中部署應用程序,不必關心具體部署在哪臺主機上,只需要關心需要的資源,一切由集群管理程序進行調試。從Docker1.12版本開始引入Swarm模式來實現集群管理,實現應用程序自動化部署、可伸縮、高可用和負載平衡,為大規模分布式應用程序的部署和管理提供解決方案。任務5.2Swarm編排工具的使用相關知識5.2Swarm工具在Docker版本1.12之前,Docker在集群管理上依賴第三方解決方案,其中最著名的就是Kubernetes。Kubernetes簡稱K8s,是Google提供的開源的容器編排引擎,用于管理云平臺主機上的容器化應用,支持容器化應用程序的自動化部署、伸縮和管理。K8s通常結合Docker工作,并且整合多個運行Docker容器的主機集群,它不僅支持Docker,而且支持另一種容器技術Rocket。任務5.2Swarm編排工具的使用相關知識5.2Swarm工具K8s采用不同于Docker的配置和編排方法,比較復雜,適合大中型集群運行復雜應用程序的環境。Docker從1.12版本開始引入Swarm模式來實現集群管理。Swarm本意就是蜂群,表示動物的群體,Docker使用這個概念表示由多個Docker引擎組成的一個整體,也就是集群。DockerSwarm是Docker原生的集群工具,因而無需使用額外的編排軟件創建或管理集群。Docker工具和DockerAPI都可以無縫地在DockerSwarm上使用,只是使用環境從單機轉變為更高級別的集群。DockerSwarm部署更簡單,適合不大的應用程序環境,尤其適用于簡單和快速開發。用DockerSwarm創建集群很簡單,用戶不需要額外安裝任何軟件,也不需要進行任何額外的配置,很適合作為學習和使用容器集群平臺的起點,當然也可用于中小規模的Docker集群實際部署。任務5.2Swarm編排工具的使用相關知識5.2Swarm工具
Swarm是Docker公司在2014年12月初發布的一套用于管理Docker集群的較為簡單的工具,由于Swarm使用標準的DockerAPI作為其前端訪問入口,所以各種形式的DockerClient(DockerClientinGo、docker_py、Docker等)均可以直接與Swarm通信。舊版本的DockerSwarm使用獨立的外部KV存儲(如Consul、etcd、ZooKeeper),搭建了獨立運行的Docker主機集群,用戶可以像操作單臺Docker主機一樣操作整個集群,DockerSwarm可將多臺Docker主機當作一臺Docker主機來管理。新的SwarmMode是在Docker1.12中被集成到Docker引擎中的,引入了服務的概念,提供了眾多的新特性,如具有容錯能力的去中心化設計,內置服務發現、負載均衡、路由網格、動態伸縮、滾動更新、安全傳輸等功能。任務5.2Swarm編排工具的使用相關知識5.2Swarm工具Swarm和Kubernetes比較類似,但是更加輕量,具有的功能比Kubernetes少一些。DockerSwarm是Docker官方提供的款集群管理工具,能夠將多臺主機構建成一個Docker集群,其主要作用是把若干臺Docker主機抽象為一個整體,并通過一個入口統一管理這些Docker主機的各種Docker資源,通過DockerSwarm來部署管理應用程序,并結合Overlay網絡實現容器的調試與相互訪問。DockerSwarm的主要概念包括Swarm、節點、服務和任務、高可用性以及負載平衡等。任務5.2Swarm編排工具的使用相關知識5.2Swarm架構Swarm作為一個管理Docker集群的工具使用時,需要先對其進行部署,可以單獨將Swarm部署于一個節點。另外,Swarm需要一個Docker集群,集群上的每一個節點均安裝Docker。具體的Swarm架構如圖所示。Swarm架構中最主要的處理部分是SwarmNode(節點)。Swarm管理的對象是DockerCluster,DockerCluster由多個DockerNode組成,而負責給Swarm發送請求的是DockerClient。任務5.2Swarm編排工具的使用相關知識5.2Swarm架構通常分為管理節點和工作節點。管理節點:要將應用程序部署到swarm,需要向管理節點提交一個服務定義。管理節點將稱為任務的工作單元分派給工作節點。執行所需的編排和群集管理功能,以保持群的所需狀態。管理節點選擇一個領導者來執行編排任務。工作節點:接收并執行從管理節點調度的任務。默認情況下,管理節點也將服務作為工作節點運行,但您可以將它們配置為以獨占方式運行管理任務并僅作為管理節點。代理在每個工作節點上運行,并報告分配給它的任務。worker節點將其分配任務的當前狀態通知給manager節點,以便manager可以保持每個worker的所需狀態。任務5.2Swarm編排工具的使用相關知識5.2Swarm相關概念1.Swarm
集群的管理和編排使用了嵌入到Docker引擎中的SwarmKit,可以在Docker初始化時啟動Swarm模式或者加入已存在的Swarm。任務5.2Swarm編排工具的使用相關知識5.2Swarm相關概念2.節點
Node是加入到Swarm集群中的一個Docker引擎實體,可以在一臺物理機上運行多個Node,Node可以分為管理節點(manager節點)和工作節點(worker節點)兩類。
當一個節點作為Swarm的Docker引擎實體,部署應用到集群中時,會提交服務到管理節點,管理節點調度任務到工作節點,管理節點還要執行維護集群狀態的編排和集群管理的功能,工作節點接收并執行來自管理節點的任務。通常,管理節點也可以是工作節點,工作節點會報告當前狀態給管理節點。任務5.2Swarm編排工具的使用相關知識5.2Swarm相關概念3.服務
服務是要在管理或工作節點上執行的任務的定義。它是swarm系統的中心結構,是用戶與swarm交互的主要根源。創建時,指定要在運行的容器中使用的容器映像和要執行的命令;在復制服務模型中,swarmmanager根據您在所需狀態下設置的規模在節點之間分配特定數量的任務,對于全局服務,swarm在集群中的每個可用節點上為服務運行一個任務。
服務是在工作節點上執行任務的定義,在工作節點上執行,創建服務時,需要指定容器鏡像。任務5.2Swarm編排工具的使用相關知識5.2Swarm相關概念4.任務
任務是攜帶一個Docker容器和在容器內運行的命令。它是swarm的原子調度單元。管理節點根據服務規模中設置的副本數將任務分配給工作節點。任務一旦分配給節點,就不能移動到另一個節點。它只能在指定的節點上運行或失敗。
任務是指在Docker容器中執行的命令,管理節點根據指定數量的任務副本來分配任務給工作節點。任務5.2Swarm編排工具的使用相關知識5.2Swarm常用命令
Swarm的常用命令有dockerswarm、dockerservice和dockernode。任務5.2Swarm編排工具的使用相關知識5.2dockerswarm常用命令:用于管理Swarm集群命令描述dockerswarminit初始化一個Swarm集群dockerswarmjoin加入集群作為工作節點或管理節點dockerswarmjoin-token管理用于加入集群的令牌dockerswarmleave離開Swarm集群dockerswarmunlock解鎖Swarm集群dockerswarmunlock-key管理解鎖鑰匙dockerswamupdate更新Swarm集群Swarm常用命令dockerswarminit初始化一個Swarm集群,用于Swarm管理Docker集群時,DockerNode的節點發現功能。發起該命令之后,Swarm會前往DockerHub上內建的發現服務中獲取一個全球唯一的token,用以唯一的標識Swarm管理的Docker集群。任務5.2Swarm編排工具的使用相關知識5.2Swarm常用命令DockerNode上swarmjoin執行之后,標志著DockerNode向Swarm注冊,請求加入Swarm管理的Docker集群中。Swarm通過注冊信息,發現DockerNode,并獲取DockerNode的狀態以及具體信息,以便處理Docker請求時作為調度依據。任務5.2Swarm編排工具的使用相關知識5.2Swarm常用命令
Swarm的常用命令有dockerswarm、dockerservice和dockernode。任務5.2Swarm編排工具的使用相關知識5.2dockerservice常用命令:用于管理服務命令描述dockerservicecreate創建服務dockerserviceinspect顯示一個或多個服務的詳細信息dockerservicelogs獲取服務的日志dockerservicels列出服務dockerservicerm刪除一個或多個服務dockerservicescale設置服務的實例數量dockerserviceupdate更新服務dockerservicerollback恢復服務到更新之前的配置部署應用跟docker一樣,可以把應用打包成鏡像運行設定的副本個數即可。例如:一個工作節點上創建一個名為helloworld的服務,這里是隨機指派給一個工作節點dockerservicecreate--replicas1--namehelloworldalpineping解釋:該dockerservicecreate命令創建服務。該--name標志為服務命名helloworld。該--replicas標志指定1個運行實例的所需狀態。參數alpineping將指定alpine鏡像,并在容器啟動后執行ping操作。任務5.2Swarm編排工具的使用相關知識5.2Swarm常用命令任務5.2Swarm編排工具的使用相關知識5.2查看應用dockerservicels
Swarm常用命令Swarm常用命令
Swarm的常用命令有dockerswarm、dockerservice和dockernode。任務5.2Swarm編排工具的使用相關知識5.2dockernode常用命令:用于管理Swarm集群中的節點命令描述dockernodedemote從Swarm集群管理器中降級一個或多個節點dockernodeinspect顯示一個或多個節點的詳細信息dockernodels列出Swarm集群中的節點dockernodepromote將一個或多個節點加入集群管理器中dockernodeps列出一個或多個在節點上運行的任務,默認為當前節點dockernoderm從Swarm集群中刪除一個或多個節點dockernodeupdate更新一個節點Swarm常用命令#查看集群節點:#dockernodels#創建nginx服務:#dockerservicecreate--namenginx--replicas2--publish80:80nginx#列出服務:#dockerservicels#kill其中一個容器:#dockerkill96e6bccc2209#修改服務實例數量為3:#dockerservicescalenginx=3#刪除nginx服務:#dockerservicermnginx#刪除swarm節點:#dockernoderm-fnode1任務5.2Swarm編排工具的使用相關知識5.2Swarm集群的創建與應用1.任務環境準備本任務選用3臺部署在VMwareWorkstation16中的RHEL8.1虛擬機,虛擬機均已預先安裝好docker-ce26.1.3,并與外網互通,且關閉防火墻和selinux配置。任務5.2Swarm編排工具的使用任務實現5.2主機名IP地址角色master01/24管理節點node102/24工作節點node203/24工作節點表5-1各節點主機環境要求2.修改各節點主機的主機名(1)修改IP地址為01節點主機的主機名為master。 #hostnamectlset-hostnamemaster (2)修改IP地址為02節點主機的主機名為node1。 #hostnamectlset-hostnamenode1(3)修改IP地址為03節點主機的主機名為node2。 #hostnamectlset-hostnamenode23.各節點主機執行以下命令配置時鐘同步 #timedatectlset-timezoneAsia/Shanghai #chronycmakestep任務5.2Swarm編排工具的使用任務實現5.24.在各節點主機上編輯docker.service文件,修改ExecStart參數信息 #vi/lib/systemd/system/docker.service//修改如下參數信息 ExecStart=/usr/bin/dockerd-Htcp://:2375-Hunix:///var/run/docker.sock文件編輯完后,保存退出,返回命令行,并重啟Docker服務。 #systemctldaemon-reload #systemctlrestartdocker說明:可通過netstat命令查看啟動的端口信息,應看到2375端口的信息,該端口為默認的DockerHTTPAPI的端口。如果是一個集群,則集群中所有相關的主機都要啟動2375端口的Docker服務。任務5.2Swarm編排工具的使用任務實現5.25.獲取swarm鏡像,創建swarm集群后查看集群節點信息。(1)在各主機節點上獲取swarm鏡像。 #dockerpullswarm:latest(2)在master節點上初始化集群,獲取唯一的token,作為集群的唯一標識。 #dockerswarminit--advertise-addr01
命令執行后,master節點自動加入Swarm集群中,并會創建一個集群token,獲取全球唯一的token,作為集群的唯一標識。后續可利用獲取的token值將其他節點加入集群。 --advertise-addr參數表示其他Swarm中的工作節點使用此IP地址與manager節點聯系。命令的輸出內容中包含了其他節點加入集群的命令。(3)將node1和node2加入集群,在node1和node2節點上執行以下命令。 #dockerswarmjoin--tokenSWMTKN-1-6b7kh7jvf4h77xzs428porckmes5sifxtqd4ft3x4l06totliq-
dnoe5e7n7zg02x4c0uyqgpu8x0:2377(4)在master節點上查看集群中各節點的信息。 #dockernodels任務5.2Swarm編排工具的使用任務實現5.26.在Swarm集群中部署服務,本任務以部署nginx服務為例進行介紹(1)在各主機節點中下載nginx:latest鏡像。 #dockerpullnginx:latest(2)在master節點中創建一個網絡“nginx_net”,用于使不同主機上的容器網絡互通。 #dockernetworkcreate-doverlaynginx_net //創建網絡nginx_net #dockernetworkls //列出所有網絡(3)在master節點上創建一個副本數為1的nginx容器。 #dockerservicecreate--replicas1--networknginx_net--namemy-test-p9999:80nginx(4)打開瀏覽器,在地址欄中依次輸入“01:9999”“02:9999”和“03:9999”進行驗證。返回效果圖如圖所示。任務5.2Swarm編排工具的使用任務實現5.2任務5.2Swarm編排工具的使用任務實現5.27.swarm常用命令的使用,命令需在master節點上執行(1)列出已創建的服務。 #dockerservicels
從命令的返回結果來看,my-test服務已創建。(2)查看my-test服務的詳細信息。 #dockerserviceinspect--prettymy-test//查看服務信息
或利用dockerserviceinspectmy-test命令查看更詳細的信息。任務5.2Swarm編排工具的使用任務實現5.2(3)利用dockerserviceps命令查詢在哪個節點運行my-test容器。 #dockerservicepsmy-test(4)伸縮容器。將my-test容器擴展到5個,在manager節點上執行以下命令。 #dockerservicescalemy-test=5
和創建服務一樣,在增加scale數量之后,將會創建新的容器。執行命令前,my-test容器只在master節點上有一個實例,而現
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五一活動臺球活動方案
- 五一活動送火花活動方案
- 五一物業評選活動方案
- 五一電信促銷活動方案
- 五一節活動秒殺活動方案
- 五一野炊活動方案
- 五一飯店開業活動方案
- 五四鄉鎮團建活動方案
- 宿州職業技術學院《國外馬克思主義專題》2023-2024學年第二學期期末試卷
- 五大領域典型活動方案
- 以上由自治區教育科學規劃辦填寫內蒙古自治區教育科學“十四五”規劃課題立項申請評審書
- 骨髓腔輸液技術教案輸液通路與監護P頁
- 順義區六年級下學期語文期末試卷
- 2024年重慶市高考思想政治試卷真題(含答案解析)
- 2.2 社會主義制度在中國的確立(課件)-2024-2025學年高中政治必修一 中國特色社會主義 (統編版 )
- 河北省保定市2023-2024學年高二下學期7月期末生物試題
- 《通信原理》期末考試復習題庫(含答案)
- 2024年中儲糧集團招聘筆試參考題庫附帶答案詳解
- 20-樊登讀書會第20本書-《高績效教練》省公開課一等獎全國示范課微課金獎課件
- 安全生產十大法則
- 電力系統安裝服務市場分析及競爭策略分析報告
評論
0/150
提交評論