tft每日頭條

 > 職場

 > docker多機部署管理

docker多機部署管理

職場 更新时间:2024-11-18 06:19:28

docker多機部署管理(Docker集群管理DockerMachine的工作流程)1

前言:以docker為代表的容器技術正在成為應用交付運維的全新标準,圍繞其周圍的整個生态圈也在發生着天翻地覆的改變,我們可以期待以其為代表的新一輪雲技術革命的到來。‌‌CaaS(Container as a Service)技術是為了解決Docker容器的最佳應用場景 – 雲端而生,如何在雲端管理部署Docker容器便成為CaaS技術的核心所在。做為Docker容器集群管理三劍客之一的Docker Machine 大大簡化了Docker主機部署的複雜度,極大的方便了開發者管理分布式Docker主機。本文通過對Docker Machine的源碼分析,講述了Docker Machine的工作原理。

應用軟件的部署方式主要可以分為部署在用戶環境的主機上(On-Premise),部署在雲端(SaaS)以及兩者混合模式(Hybird)。部署在雲端的軟件又可根據軟件可訪問的範圍分為公有雲部署,私有雲部署以及其兩者的混合模式。如何在以上各種環境中創建Docker主機便成為DevOps關注的一個問題。Docker Machine的産生簡化了這一過程,讓你可以使用一條命令在你的計算機,公有雲平台以及私有數據中心創建及管理Docker主機。

在Docker Machine發布之前,你可能會遇到以下問題:

你需要登錄主機,按照主機及操作系統特有的安裝以及配置步驟安裝Docker,使其能運行Docker容器。

你需要研發一套工具管理多個Docker主機并監控其狀态。

你在本地開發,産品部署在公有雲平台,你希望能盡可能的減小兩個環境的差異性

Docker Machine的出現解決了以上問題。

Docker Machine簡化了部署的複雜度,無論是在本機的虛拟機上還是在公有雲平台,隻需要一條命令便可搭建好Docker主機

Docker Machine提供了多平台多Docker主機的集中管理

Docker Machine 使應用由本地遷移到雲端變得簡單,隻需要修改一下環境變量即可和任意Docker主機通信部署應用。

綜合來說Docker Machine讓下圖這種開發模式得到了大大的簡化。

docker多機部署管理(Docker集群管理DockerMachine的工作流程)2

Docker Machine的安裝

可以通過下載二進制可執行文件的方式安裝Docker Machine,本文以Linux系統為例。

docker多機部署管理(Docker集群管理DockerMachine的工作流程)3

Docker Machine的運行原理

本文通過兩個例子講述了Docker Machine的工作原理及工作流程:在本機安裝Virtualbox虛拟機作為Docker主機,以及在AWS創建Docker主機。

create命令用來創建docker主機,運行create命令需要指明驅動的名稱,目前支持在本機運行virtualbox虛拟主機,Hyper-V虛拟主機,VMware虛拟主機,AWS EC2,Azure,DigitalOcean,Google等公有雲主機,以及使用Openstack搭建的私有數據中心。

新的虛拟化(Xen,KVM)支持以及新的雲平台支持可以通過開發驅動的方式支持。

在本機安裝Virtualbox虛拟機作為Docker主機

docker多機部署管理(Docker集群管理DockerMachine的工作流程)4

Create Docker Machine主要包括三個Create過程。首先是Provider Create(libmachine/provider.go),此函數主要是在當前運行docker-machine命令主機上創建以machine name命名的文件夾,并将根證書,服務器證書以及用戶證書拷貝到此文件夾。其次是driver create(例如drivers/virtualbox/virtualbox.go)用來創建主機,最後是運行host create(libmachine/host.go)通過SSH安裝并配置Docker。目前在本地環境中使用的是boot2docker鏡像,雲端環境使用的是Ubuntu鏡像。

運行在Virtualbox虛拟主機上的docker machine創建過程如下。

Docker Machine首先生成一個自簽名的Root CA,然後用這個Root CA簽發客戶端證書,此證書在Docker客戶端連接遠程Docker服務器的時候做認證使用;

配置Docker主機的運行參數,參數包括Docker客戶端與遠程Docker服務器之間認證參數,遠程Docker daemon的運行參數以及Docker Swarm的參數。

docker多機部署管理(Docker集群管理DockerMachine的工作流程)5

3. Docker Machine使用boot2docker作為virtualbox的鏡像 – boot2docker是一個運行Docker容器的輕量級Linux系統,完全在内存中運行。

4. 創建virtualbox虛拟機

a. 生成ssh key – 部署過程中使用次ssh key認證實現遠程操作

b. 創建一個VMDK文件作為虛拟機的hdd,大小可以在運行時指定參數–virtualbox-disk-size控制

docker多機部署管理(Docker集群管理DockerMachine的工作流程)6

c. 創建虛拟機

docker多機部署管理(Docker集群管理DockerMachine的工作流程)7

修改虛拟機參數,可通過參數–virtualbox-memory和–virtualbox-cpu-count控制内存大小和CPU個數。

docker多機部署管理(Docker集群管理DockerMachine的工作流程)8

d. 配置虛拟機網絡 – NIC1為NAT形式使虛拟機能夠訪問外網,NIC2為hostonly模式用于内部通信,子網可以通過參數–virtualbox-hostonly-cidr修改

docker多機部署管理(Docker集群管理DockerMachine的工作流程)9

e. 配置存儲 – 将boot2docker iso文件挂載在虛拟dvd光驅,步驟b中創建的文件作為hdd

5. 啟動虛拟機,并設置端口映射,将本地随機端口轉發到虛拟機22端口(此時還不知道虛拟機Hostonly網卡的IP地址,所以隻能通過NAT網卡進行端口映射的方法訪問虛拟機)

6. 使用默認用戶名docker,默認密碼docker登錄虛拟機将第一步生成的ssh key導入到虛拟機/home/docker/.ssh/authorized_keys。獲取hostonly網卡的IP地址(通過DHCP獲得)

7. 部署虛拟機的Docker運行環境(所有命令都是通過SSH遠程執行)

a. 配置虛拟機hostname

b. 安裝Docker

c. 配置docker daemon使用TLS –tlsverify。使用此選項之後docker daemon隻接受來自第1步中自簽名的根證書簽發的證書,docker客戶端隻相信第1步中自簽名的更證書簽發的服務器證書

d. 簽發服務器證書

自此為止一個基于virtualbox的Docker運行環境就創建好了,使用者需要将本地的docker客戶端配置到遠程的docker daemon。

docker多機部署管理(Docker集群管理DockerMachine的工作流程)10

Docker Machine的其他命令都是通過drivers/virtualbox/virtualbox.go驅動實現的,在此就不累述了。

在AWS創建Docker主機

Docker Machine通過AWS REST API創建一個Docker主機所需要的資源,需要使用AWS訪問密鑰(–amazonec2-access-key)和AWS密鑰(–amazonec2-secret-key)進行認證。所創建的EC2主機需要在一個提前創建好的VPC(–amazonec2-vpc-id)裡面。

檢查環境 – 是否已經存在重名的密鑰對,檢查指定區域(–amazonec2-zone)的指定VPC中是否存在子網,使用默認的子網

創建密鑰對并通過AWS REST API上傳到AWS服務器

創建一個安全組允許訪問22(SSH),2376(Docker)或3376(指定Swarm),可通過–amazonec2-security-group指定名稱

創建一個塊設備

運行EC2實例 – 指定AMI,區域,安全組,子網等參數

部署虛拟機的Docker運行環境 -使用默認用戶ubuntu以及之前生成的密鑰SSH到AWS EC2實例進行遠程操作

a. 配置虛拟機hostname

b. 安裝Docker

c. 配置docker daemon使用TLS –tlsverify。使用此選項之後docker daemon隻接受來自第1步中自簽名的根證書簽發的證書,docker客戶端隻相信第1步中自簽名的更證書簽發的服務器證

d. 簽發服務器證書

至此一個運行在AWS公有雲上的Docker主機就創建成功了。

Docker Machine的其他命令也是在drivers/amazonec2/amazonec2.go中實現的

關于Docker Machine與Docker Swarm的集成,将在之後Docker Swarm的章節中介紹。

結語:本文通過兩個典型實例分析力Docker Machine在本地虛拟環境的工作流程以及在遠程公有雲平台的工作流程。通過以上步驟更能說明Docker Machine為開發者帶來的一步式部署,免去了煩瑣的虛拟機搭建以及公有雲IaaS的配置,使開發者能專注于應用開發。Docker Machine目前還處在初級階段,在其Roadmap我們可以看到包括Mac/Windows支持,多種發行版支持,更廣泛的支持Docker engine以及Swarm的配置,我們有理由期待Docker Machine成為一個更加通用的Docker主機部署管理工具。

最後,如果有朋友想要學習以上知識點,可以直接點此加群免費獲取視頻學習資料

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved