基於springboot和docker-java怎麼實現對docker容器的動態管理和監控功能
docker簡介
docker 是一個開源的應用容器引擎,和傳統的虛擬機器技術相比,docker 容器效能開銷極低,因此也廣受開發者喜愛。隨著基於docker的開發者越來越多,docker的映像也原來越豐富,未來各種企業級的完整解決方案都可以直接透過下載映像拿來即用。因此docker變得越來越重要。
本文目的
本文透過一個專案實例來介紹如果透過docker對外介面來實現對docker容器的管理和監控。
應用程式場景:
對伺服器資源池透過docker進行統一管理,按需分配資源和建立容器,達到資源最大化利用。同時確保各業務(容器)之間的隔離。並可支援專案的線上部署。
1、透過介面建立docker的tomcat容器,並配置限額。
2、上傳war套件並部署到容器。
3、動態監控docker所有容器的資源使用量。
程式碼基於docker-java開源元件,基於spring-boot完成功能開發。介面如下圖:
基礎環境
1、eclipse 2019-03;
2、docker for windows。本著學習和簡單的目的,並未使用linux環境,但原理和基本命令相同。
相關技術和知識點:
maven,spring-boot;spring mvc;spring上傳下載,jquery ajax和上傳。
實作原理
docker對外提供了豐富介面(如:restfull api),透過這些介面可對docker進行管理。 docker-java開源元件基於這個介面做了封裝,使得開發更加簡單。當然市面上還有其他一些封裝好的組件,大家可自行比較和學習。在這裡對開源作者表示感謝。
實現過程之前期準備
1、升級windows
由於我們使用的是windows環境, 筆者自己電腦預先安裝的是win10 家庭版,而docker for windows 則需要運行在更高階的作業系統上,才能使用虛擬化技術,因此需要升級到專業版。
如果需要升級的,升級過程也比較簡單,簡單介紹如下(已經是專業版的可以略過):
點擊更改產品密匙,輸入專業版的密匙之後,就等待慢慢升級了。密匙自己在網路上找,反正是有的。
2、安裝docker for windows
去官網下載後,一路下一步就可以了。安裝完後,會自行啟動,啟動後工具列就會出現docker的標誌。
安裝成功後,可以敲一些指令測試是否成功。如:查看docker基本資訊。
3、修改docker映像位址。
由於預設的鏡像位址較慢,一個tomcat鏡像都500多m,網路不好下載會很慢,可將鏡像位址配置成網易的鏡像位址,如下:
#4、啟動遠端管理
勾選上最後一項,這裡面的tcp//xxx就是遠端連線位址。
啟動後,在瀏覽器裡面敲一下位址,看看是否能回傳結果:
(此位址同在cmd裡面輸入docker indo)回傳的是json格式的內容:
實作過程之程式碼開發
1、建立maven專案。
由於過程簡單,省略此過程。整個專案的程式碼結構如下:
2、配置docker-java和spring boot的maven依賴,最終pom檔案內容如下
透過看jar包,docker-java底層應該是用了netty依賴。
3、新增spring設定檔application.properties
設定jsp的位置和docker的管理位址。
4、主要類別介紹:
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。具體效果如下:
1、監控管理首頁
#2、新增容器;
以上是基於springboot和docker-java怎麼實現對docker容器的動態管理和監控功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]
