溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

發(fā)布時(shí)間:2022-05-10 10:51:31 來源:億速云 閱讀:599 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能”吧!

docker簡介

docker 是一個(gè)開源的應(yīng)用容器引擎,和傳統(tǒng)的虛擬機(jī)技術(shù)相比,docker 容器性能開銷極低,因此也廣受開發(fā)者喜愛。隨著基于docker的開發(fā)者越來越多,docker的鏡像也原來越豐富,未來各種企業(yè)級的完整解決方案都可以直接通過下載鏡像拿來即用。因此docker變得越來越重要。

本文目的

本文通過一個(gè)項(xiàng)目實(shí)例來介紹如果通過docker對外接口來實(shí)現(xiàn)對docker容器的管理和監(jiān)控。

應(yīng)用場景:

服務(wù)器資源池通過docker進(jìn)行統(tǒng)一管理,按需分配資源和創(chuàng)建容器,達(dá)到資源最大化利用。同時(shí)保證各業(yè)務(wù)(容器)之間的隔離。并可支持項(xiàng)目的在線部署。

1、通過界面創(chuàng)建docker的tomcat容器,并配置限額。

2、上傳war包并部署到容器。

3、動(dòng)態(tài)監(jiān)控docker所有容器的資源使用情況。

代碼基于docker-java開源組件,基于spring-boot完成功能開發(fā)。界面如下圖:

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

基礎(chǔ)環(huán)境

1、eclipse  2019-03;

2、docker for windows。本著學(xué)習(xí)和簡單的目的,并未使用linux環(huán)境,但原理和基本命令相同。

相關(guān)技術(shù)和知識(shí)點(diǎn):

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

實(shí)現(xiàn)原理

docker對外提供了豐富接口(如:restfull api),通過這些接口可對docker進(jìn)行管理。docker-java開源組件基于這個(gè)接口做了封裝,使得開發(fā)更加簡單。當(dāng)然市面上還有其他一些封裝好的組件,大家可自行比較和學(xué)習(xí)。在這里對開源作者表示感謝。

實(shí)現(xiàn)過程之前期準(zhǔn)備

1、升級windows

由于我們使用的是windows環(huán)境, 筆者自己電腦預(yù)裝的是win10 家庭版,而docker for windows 需要運(yùn)行在更高級別的操作系統(tǒng)上,才能使用虛擬化技術(shù),因此需要升級到專業(yè)版。

如果需要升級的,升級過程也比較簡單,簡單介紹如下(已經(jīng)是專業(yè)版的可以略過):

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

點(diǎn)擊更改產(chǎn)品密匙,輸入專業(yè)版的密匙之后,就等待慢慢升級了。密匙自己在網(wǎng)上找,反正是有的。

2、安裝docker for windows

去官網(wǎng)下載后,一路下一步就可以了。安裝完后,會(huì)自己啟動(dòng),啟動(dòng)后工具欄就會(huì)出現(xiàn)docker的標(biāo)志。

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

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

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

3、修改docker鏡像地址。

由于默認(rèn)的鏡像地址較慢,一個(gè)tomcat鏡像都500多m,網(wǎng)絡(luò)不好下載會(huì)很慢,可將鏡像地址配置成網(wǎng)易的鏡像地址,如下:

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

4、啟動(dòng)遠(yuǎn)程管理

勾選上最后一項(xiàng),這里面的tcp//xxx就是遠(yuǎn)程連接地址。

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

啟動(dòng)后,在瀏覽器里面敲一下地址,看看是否能返回結(jié)果:

(此地址同在cmd里面輸入docker indo)返回的是json格式的內(nèi)容:

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

實(shí)現(xiàn)過程之代碼開發(fā)

1、創(chuàng)建maven項(xiàng)目。

  由于過程簡單,省略此過程。整個(gè)項(xiàng)目的代碼結(jié)構(gòu)如下:

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

2、配置docker-java和spring boot的maven依賴,最終pom文件內(nèi)容如下

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

通過看jar包,docker-java底層應(yīng)該是用了netty依賴。

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

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

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

4、主要類介紹:

1.spring boot啟動(dòng)主類。

當(dāng)然也可以配置其他容器或者用maven的jetty插件來啟動(dòng)。

可參考另外一篇文章:spring-boot原理(附帶實(shí)現(xiàn)一個(gè)spring-boot-starter實(shí)例)附源碼下載

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

注意這個(gè)類放的位置,最好放在根目錄,這樣根目錄下的所有子目錄都能被spring掃描到了。

2.dockerclientoperaterserver(與docker交互的類),具體如下:

包括如下方法:

initclient:初始化鏈接。

getdockerinfo:獲取docker基本信息;

stat:實(shí)時(shí)統(tǒng)計(jì)信息;

refreshcontainers:獲取所有容器的基本信息,并放入緩存;

createandstartrcontaineranddeployapp:根據(jù)界面?zhèn)鬟f的參數(shù)創(chuàng)建并啟動(dòng)容器,同時(shí)部署項(xiàng)目;

stopcontainer:停止容器;

rmcontainer:刪除容器;

closeclient:關(guān)閉鏈接;

pushapptocotainer:部署war包到tomcat;

由于代碼片段太長,這里看幾個(gè)主要的方法:

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

createcontainer(創(chuàng)建容器):

這個(gè)方法里面通過docker-java創(chuàng)建容器,分配限額,配置端口映射等。

pushapptocotainer:部署項(xiàng)目到tomcat

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

stat,監(jiān)控方法:

監(jiān)控這一塊沒有用docker-java的方法,其實(shí)它是支持的,但是由于返回結(jié)果需要各種處理,就用了投機(jī)取巧的方法。使用java調(diào)用cmd來執(zhí)行(docker stats)獲取監(jiān)控結(jié)果。

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

docker-java來獲取監(jiān)控信息的代碼如下:

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

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

主要方法介紹:

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

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

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

具體代碼詳情,請下載源碼啟動(dòng)后按照過程查看。

實(shí)現(xiàn)后的主要界面:

由于是示例項(xiàng)目,代碼沒有用什么vue和bootstrap框架。自己寫了點(diǎn)css和js。具體效果如下:

1、監(jiān)控管理主頁

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

2、添加容器;

基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能

感謝各位的閱讀,以上就是“基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對基于springboot和docker-java怎么實(shí)現(xiàn)對docker容器的動(dòng)態(tài)管理和監(jiān)控功能這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI