?

基于容器技術的應用系統部署

2021-03-04 23:22顧偉
科學與財富 2021年26期
關鍵詞:內網鏡像

顧偉

關鍵詞:容器技術;內網;鏡像

一、部署內網鏡像倉庫并導入鏡像

由于內網服務器不能訪問外網資源,內網服務器將無法下載Docker官方鏡像倉庫hub.docker.com中的鏡像文件,因此需要在內網中搭建一臺鏡像倉庫服務器便于各個應用系統部署容器。Docker公司已將鏡像倉庫Registry服務代碼開源,并在hub.docker.com網站提供Registry的docker鏡像,因此可以非常方便的使用容器方式部署鏡像倉庫。

1.1安裝docker服務

在使用命令“yum install docker”安裝docker服務;

1.2 下載Registry服務鏡像

在一臺可以訪問外網并裝有docker服務的Linux系統上運行“docker pull registry”命令,系統將下載最新的Registry服務鏡像:

1.3 導入鏡像

導入Registry服務鏡像到內網服務器:使用“docker save -o registry.tar registry”命令將Registry服務鏡像導出為registry.tar文件,拷貝文件到內網的10.89.2.110服務器上,再運行“docker load --input registry.tar”命令將Registry服務鏡像導入到本地服務器。

1.4 創建https證書

創建https證書:由于Registry服務默認需要使用https,因此需要使用“openssl req -new -x509 -days 35600 -nodes -out ./web.crt ?-keyout ./web.key”命令創建網站證書,

1.5 創建并啟動Registry服務容器,推送鏡像到倉庫

使用命令“docker tag docker.io/鏡像名 10.89.2.110/鏡像名 ; docker push 10.89.2.110/鏡像名”可以將從外網導入的各個鏡像推送到10.89.2.110鏡像倉庫中,在其他服務器就可以使用“docker pull 10.89.2.110/鏡像名”拉取需要的鏡像了。

二、使用Docker Compose部署應用的示例

以某部門基礎資料臺賬庫項目為例,該項目使用NextCloud開源網盤系統作為文件存儲、同步、共享的資料庫,部署在一臺CentOS Linux服務器上。NextCloud開源網盤系統由MariaDB數據庫服務和NextCloud應用服務組成,需要部署對應的容器。完成該應用系統的部署需要如下幾個步驟:

2.1 安裝Docker與docker-compose

使用命令“yum install docker docker-compose”安裝docker服務和docker-compose工具;

2.2 創建工作目錄和容器配置文件

在數據盤上創建工作目錄,并在工作目錄里創建docker-compose.yml容器配置文件。容器配置文件定義了容器鏡像名稱、版本號、數據卷的掛載目錄、容器的環境變量、對外提供服務的端口等配置項。

2.3 創建并啟動容器

容器配置文件中指定了兩個容器鏡像——MariaDB:10.3和NextCloud:18.0.3,均是由官方開發人員制作,然后上傳到hub.docker.com公共鏡像倉庫服務器以供所有人免費使用。由于服務器不能訪問外網,本項目部署前已將兩個鏡像導入自建的內網鏡像倉庫服務器10.89.2.110中。此時,在工作目錄里執行“docker-compose up -d”命令,docker-compose將從內網鏡像倉庫拉取鏡像文件到本地服務器,并以鏡像為模板,按照容器配置文件中的定義自動創建并啟動兩個容器。

三、使用Kubernetes實現無狀態應用的負載均衡與高可用的示例

在Kubernetes中,創建了Service對象后,會自動對匹配的容器實現負載均衡;創建Deployment對象后,會自動對匹配的容器實現高可用機制。以在四臺服務器組成的Kubernetes集群上部署三個nginx服務并實現負載均衡和高可用為例,通過容器和對象配置文件nginx-guwei.yaml創建一個Deployment對象、三個nginx容器和一個Service對象,訪問集群服務ip,Kubernetes系統會自動輪詢三個nginx容器,并返回所在容器的IP地址;刪除一個nginx容器,系統會自動重建一個nginx容器,使nginx容器的數量始終保持為三。步驟如下:

3.1 創建nginx-guwei.yaml配置文件

在文件中定義對象與容器名稱、容器副本數量、鏡像名稱與版本號、nginx容器的主頁內容、對外提供服務的端口等配置項。

3.2 創建并啟用對象和容器

執行“ kubectl apply -f nginx-guwei.yaml”命令創建容器和對象,查看容器和對象信息可以發現,kubernetes已經創建了一個名為“guwei-web”的Deployment對象、三個名稱前綴為“guwei-web-5bb7bc98bc-”的nginx容器(分別運行在三個服務器上)和一個名為“guwei-lb-ha”的Service對象。

3.3 測試自動負載均衡

使用curl命令多次訪問集群IP:192.168.239.90 ,系統會以輪詢的方式返回三個nginx容器的IP,這證明系統已經自動實現了輪詢方式的負載均衡

當前,各個公司正大力推進私有云的落地部署工作,其使用的主要底層技術就是基于Kubernetes的容器化技術,能夠有效減少資源的消耗,降低運維的復雜度,規范應用系統部署,提升信息系統的質量。因此基于上述原因和容器技術的優勢,有必要在公司范圍內開展應用系統容器化部署,從而節約IT投入成本、提升信息系統的運維能力。

參考文獻:

[1]James Turnbull.The Docker Book.北京.人民郵電出版社,2016.4

[2]閆健勇,龔正,吳治輝,等.Kubernetes權威指南:從Docker到Kubernetes實踐全接觸(紀念版).北京.電子工業出版社,2017.9

猜你喜歡
內網鏡像
企業內網中的數據隔離與交換技術探索
《天水之鏡像》
內外網隔離條件下如何實現郵件轉發
地下車庫柱網布置設計思路
QoS技術在企業內網實踐探索
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合