基於spring-boot和docker-java實現對docker容器的動態管理和監控[附完整源碼下載]

(我是個封面)css

docker簡介

Docker 是一個開源的應用容器引擎,和傳統的虛擬機技術相比,Docker 容器性能開銷極低,所以也廣受開發者喜好。隨着基於docker的開發者愈來愈多,docker的鏡像也原來越豐富,將來各類企業級的完整解決方案均可以直接經過下載鏡像拿來即用。所以docker變得愈來愈重要。html

本文目的

本文經過一個項目實例來介紹若是經過docker對外接口來實現對docker容器的管理和監控。vue

應用場景:java

對服務器資源池經過docker進行統一管理,按需分配資源和建立容器,達到資源最大化利用。同時保證各業務(容器)之間的隔離。並可支持項目的在線部署。jquery

本項目模擬實現以上場景,代碼不徹底嚴禁,代碼僅供學習。linux

實現功能:ajax

一、經過界面建立docker的tomcat容器,並配置限額。spring

二、上傳war包並部署到容器。docker

三、動態監控docker全部容器的資源使用狀況。json

代碼基於docker-java開源組件,基於spring-boot完成功能開發。界面以下圖:

基礎環境

一、eclipse  2019-03;

二、docker for windows。本着學習和簡單的目的,並未使用linux環境,但原理和基本命令相同。

相關技術和知識點:

maven,spring-boot;spring mvc;spring上傳下載,jquery ajax和上傳。

實現原理

docker對外提供了豐富接口(如:restfull APi),經過這些接口可對docker進行管理。docker-java開源組件基於這個接口作了封裝,使得開發更加簡單。固然市面上還有其餘一些封裝好的組件,你們可自行比較和學習。在這裏對開源做者表示感謝。固然本人也會開源的參與者,相關文章:本人的ORM開源組件

實現過程以前期準備

一、升級windows

因爲咱們使用的是windows環境, 筆者本身電腦預裝的是win10 家庭版,而docker for windows 須要運行在更高級別的操做系統上,才能使用虛擬化技術,所以須要升級到專業版。

若是須要升級的,升級過程也比較簡單,簡單介紹以下(已是專業版的能夠略過):

 

點擊更改產品密匙,輸入專業版的密匙以後,就等待慢慢升級了。密匙本身在網上找,反正是有的。

二、安裝docker for windows

去官網下載後,一路下一步就能夠了。安裝完後,會本身啓動,啓動後工具欄就會出現docker的標誌。

 

安裝成功後,能夠敲一些命令測試一下是否成功。如:查看docker基本信息。

 

三、修改docker鏡像地址。

因爲默認的鏡像地址較慢,一個tomcat鏡像都500多m,網絡很差下載會很慢,可將鏡像地址配置成網易的鏡像地址,以下:

 

四、啓動遠程管理

勾選上最後一項,這裏面的tcp//xxx就是遠程鏈接地址。

 

啓動後,在瀏覽器裏面敲一下地址,看看是否能返回結果:

http://localhost:2375/info(此地址同在cmd裏面輸入docker indo)返回的是json格式的內容:

 

實現過程之代碼開發

一、建立maven項目。

  因爲過程簡單,省略此過程。整個項目的代碼結構以下:

 

二、配置docker-java和spring boot的maven依賴,最終pom文件內容以下

 

經過看jar包,docker-java底層應該是用了netty依賴。

三、添加spring配置文件application.properties

配置jsp的位置和docker的管理地址。

 

四、主要類介紹:

1.spring boot啓動主類。

固然也能夠配置其餘容器或者用maven的jetty插件來啓動。

可參考另一篇文章:Spring-boot原理(附帶實現一個spring-boot-starter實例)附源碼下載

 

注意這個類放的位置,最好放在根目錄,這樣根目錄下的全部子目錄都能被spring掃描到了。

2.DockerClientOperaterServer(與docker交互的類),具體以下:

包括以下方法:

initClient:初始化連接。

getDockerInfo:獲取docker基本信息;

stat:實時統計信息;

refreshContainers:獲取全部容器的基本信息,並放入緩存;

createAndStartrContainerAnddeployApp:根據界面傳遞的參數建立並啓動容器,同時部署項目;

stopContainer:中止容器;

rmContainer:刪除容器;

closeClient:關閉連接;

pushAppToCotainer:部署war包到tomcat;

因爲代碼片斷太長,這裏看幾個主要的方法:

createContainer(建立容器):

 

這個方法裏面經過docker-java建立容器,分配限額,配置端口映射等。

pushAppToCotainer:部署項目到tomcat

 

stat,監控方法:

監控這一塊沒有用docker-java的方法,其實它是支持的,可是因爲返回結果須要各類處理,就用了投機取巧的方法。使用java調用cmd來執行(docker stats)獲取監控結果。

 

docker-java來獲取監控信息的代碼以下:

 

3.DockerClientController(和界面交互的controller)。

主要方法介紹:

addContainer:添加容器以及上傳war包

 

以上即是主要代碼的講解。

具體代碼詳情,請下載源碼啓動後按照過程查看。

實現後的主要界面:

因爲是示例項目,代碼沒有用什麼vue和bootstrap框架。本身寫了點css和js。具體效果以下:

一、監控管理主頁

 

二、添加容器;

 

~以上即是本次分享全部內容~

過程當中又問能夠留言,若是有時間能夠一塊兒討論。謝謝!

源碼下載

爲防止地址失效,全部下載連接都在公衆號維護,請關注公衆號後,回覆「R004」 獲取完整源碼。

相關文章
相關標籤/搜索