spring-boot と docker-java に基づいて Docker コンテナの動的な管理と監視を実装します [完全なソース コードのダウンロード付き]

spring-boot と docker-java に基づいて Docker コンテナの動的な管理と監視を実装します [完全なソース コードのダウンロード付き]

Docker入門

Docker はオープンソースのアプリケーション コンテナ エンジンです。従来の仮想マシン テクノロジと比較すると、Docker コンテナはパフォーマンス オーバーヘッドが非常に低いため、開発者からも広く愛用されています。 Docker をベースに作業する開発者が増えるにつれて、Docker イメージはますます豊富になってきています。将来的には、イメージをダウンロードするだけで、さまざまな完全なエンタープライズ レベルのソリューションを直接使用できるようになります。したがって、Docker はますます重要になります。

この記事の目的

この記事では、プロジェクトの例を使用して、Docker 外部インターフェースを介して Docker コンテナを管理および監視する方法を紹介します。

適用シナリオ:

サーバー リソース プールは Docker を通じて均一に管理され、リソースの使用率を最大化するために、リソースが割り当てられ、コンテナがオンデマンドで作成されます。同時に、さまざまな業務(コンテナ)間の分離も確保されます。また、プロジェクトのオンライン展開もサポートできます。

このプロジェクトは、上記のシナリオをシミュレートします。コードは厳密に禁止されておらず、学習のみを目的としています。

この記事

1. インターフェースを通じて Docker Tomcat コンテナを作成し、制限を設定します。

2. war パッケージをアップロードし、コンテナにデプロイします。

3. すべての Docker コンテナのリソース使用状況を動的に監視します。

コードは docker-java オープンソース コンポーネントに基づいており、機能開発は spring-boot に基づいて完了しています。インターフェースは次のとおりです。

基本環境

1. 日食 2019-03;

2. Windows 用の Docker。学習と簡略化のため、Linux 環境は使用しませんが、原理と基本コマンドは同じです。

関連技術と知識ポイント:

Maven、Spring Boot、Spring MVC、Spring のアップロードとダウンロード、jQuery Ajax とアップロード。

実施原則

Docker はさまざまな外部インターフェース (RESTfull API など) を提供し、それらを通じて Docker を管理できます。 docker-java オープンソース コンポーネントはこのインターフェースに基づいてカプセル化されるため、開発が容易になります。もちろん、市場には他のパッケージ化されたコンポーネントもあり、自分で比較して学ぶこともできます。ここでオープンソースの作者に感謝の意を表したいと思います。

実施前の準備

1. Windowsをアップグレードする

弊社ではWindows環境を使用しているため、私のパソコンにはWin10 Home Editionがプリインストールされており、Docker for Windowsは仮想化技術を使用するために上位のOS上で動作する必要があるため、Professional Editionにアップグレードする必要があります。

アップグレードが必要な場合、アップグレード プロセスは比較的簡単です。以下に簡単に説明します (すでにプロフェッショナル バージョンをお持ちの場合は、これをスキップできます)。

「プロダクト キーの変更」をクリックし、プロフェッショナル バージョンのキーを入力して、アップグレードが続行されるのを待ちます。自分でインターネットでキーを探すこともできます。とにかくそこにあります。

2. Windows用Dockerをインストールする

公式サイトからダウンロードしたら、次のステップをクリックするだけです。インストール後、自動的に起動し、起動後にツールバーに docker ロゴが表示されます。

インストールが成功したら、いくつかのコマンドを入力して、インストールが成功したかどうかをテストできます。例: Docker の基本情報を表示します。

3. Docker イメージのアドレスを変更します。

デフォルトのミラー アドレスは遅く、Tomcat ミラーは 500 m 以上離れており、ネットワークが良好でない場合はダウンロードが非常に遅くなるため、次のようにしてミラー アドレスを NetEase ミラー アドレスに設定できます。

4. リモート管理を開始する

最後の項目を確認してください。ここでの tcp//xxx はリモート接続アドレスです。

起動後、ブラウザにアドレスを入力して、結果が返されるかどうかを確認します。

http://localhost:2375/info (このアドレスは、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: tomcat に war パッケージをデプロイします。

コード スニペットが長すぎるため、主なメソッドをいくつか示します。

createContainer (コンテナの作成):

この方法では、docker-java を使用してコンテナの作成、クォータの割り当て、ポート マッピングの構成などを行います。

pushAppToCotainer: プロジェクトをTomcatにデプロイする

統計、監視方法:

docker-java方式は監視には使用しません。実際にはサポートされていますが、返される結果にさまざまな処理が必要なため、ショートカット方式を使用します。監視結果を取得するには、java を使用して cmd を呼び出して (docker stats) を実行します。

監視情報を取得するための docker-java のコードは次のとおりです。

3.DockerClientController (インターフェースと対話するコントローラー)。

主な方法の紹介:

addContainer: コンテナを追加し、war パッケージをアップロードします

以上がメインコードの説明となります。

具体的なコードの詳細については、ソースコードをダウンロードして起動し、手順に従って表示してください。

実装後のメインインターフェース:

これはサンプル プロジェクトなので、コードでは Vue および Bootstrap フレームワークは使用されません。いくつかの CSS と JS を自分で書きました。具体的な効果は以下のとおりです。

1. 監視・管理ホームページ

2. コンテナを追加します。

要約する

以上が、spring-bootとdocker-javaに基づくdockerコンテナの動的管理と監視機能についてご紹介したものです[完全なソースコードのダウンロード付き]。お役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Java コンテナ クラスのソース コード Deque と ArrayDeque の詳細な説明
  • Java同期コンテナと並行コンテナの詳細な説明
  • JavaFXデスクトップアプリケーション開発の詳細説明 - グループ(コンテナグループ)
  • Spring Boot Javaベースのコンテナ構成の説明
  • 同期コンテナから並行コンテナへのJavaの操作プロセス
  • Javaコンテナクラスのソースコード詳細説明セット
  • JAVA コンテナ コレクション (コレクションとマップ) の包括的な分析

<<:  TypeScript ジェネリックを簡単に説明する方法

>>:  mysql5.7.21 utf8 エンコーディングの問題と Mac 環境での解決方法

推薦する

psdカット画像をdiv+css形式に変換する

PSD から div css へのウェブページ切り取り例ステップ 1: まず、すべてのタグの内側と外...

CentOS 7でsambaを使用してフォルダーを共有するための完全な手順

序文Samba は、サーバー プログラムとクライアント プログラムで構成され、Linux システム上...

JavaScriptの擬似配列と配列の使い方と違い

擬似配列と配列JavaScript では、5 つのプリミティブ データ型を除き、関数を含め、その他す...

MySql ビュー トリガー ストアド プロシージャの詳細な説明

ビュー:一時テーブルを繰り返し使用する場合、将来の使用を容易にするために別名を付けることができます。...

シェアしたい絶妙なApple風無料アイコン素材18セット

Apple マグカップのアイコンと追加機能 HD ストレージボックス – アドオンパックセイバースノ...

FlashFXP FTP クライアント ソフトウェア登録クラッキング方法

FlashFXPのダウンロードアドレスは、https://www.jb51.net/softs/95...

MySQL トランザクション、分離レベル、ロックの使用例の分析

この記事では、例を使用して、MySQL トランザクション、分離レベル、およびロックの使用について説明...

Docker で hyperf を開発する完全な使用例の詳細な説明

ハイパーフ公式サイトHyperf 公式ドキュメントのインストール1. Dockerの使用docker...

VUE ユニアプリコア知識の簡単な紹介

目次仕様a. ページファイルはVueの単一ファイルコンポーネント仕様に準拠しています。 b. コンポ...

MySQL最適化ソリューション: スロークエリログを有効にする

目次序文スロークエリログの設定テスト付録: ログ解析ツール mysqldumpslow要約する序文こ...

ファイルアップロードスタイルの詳細を実装するjs

目次1. 概要2. オブジェクト作成のパラメータ3. 監視例4. 使用方法5. ソースコード1. 概...

AngularJSループオブジェクトプロパティで動的列を実装するアイデアの詳細な説明

動的な列を実現するための Angularjs ループ オブジェクト プロパティ利点: オブジェクトを...

JavaがMySQL 8.0に接続できない問題の解決策

この記事では、参考までにMySQL 8.0に接続できないJavaの問題をまとめて紹介します。具体的な...

Vueはプルダウンを実装してさらに読み込む

Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...

MacでのMySQL初期化パスワード操作

Macでデータベースを操作する際に個人が遭遇するデータベース起動の問題の簡単な記録1. Apple-...