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 環境での解決方法

推薦する

WeChatアプレットbindtapとcatchtapの違いの詳細な説明

目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...

JavaScript における URL オブジェクトの素晴らしい使い方

目次序文解析パラメータURLパラメータを変更する要約する序文URLオブジェクトはページ側ではあまり使...

React Nativeの起動プロセスの詳細分析

はじめに: この記事ではreact-native-cliで作成したサンプル プロジェクト (Andr...

JSONデータをHTMLで表示する方法

背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...

HTML CSS を使用して div またはテーブルを指定した位置に固定する方法

CSSコードコンテンツをクリップボードにコピー.bottomTable{背景色: rgb (249,...

tomcat デプロイメント プロジェクトの実装と IDEA との統合

目次Tomcat でプロジェクトを展開する 3 つの方法プロジェクトをwebappsディレクトリに直...

鏡像効果を実現する JavaScript キャンバス

この記事では、JavaScriptキャンバスでミラーイメージ効果を実現するための具体的なコードを参考...

フロントエンドの vue+express ファイルのアップロードとダウンロードの例

新しいserver.jsを作成する糸初期化 -y 糸を追加エクスプレスノードモン -D var ex...

Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます

Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます。以下の操作はすべて...

MySQL 8.0 Windows zip パッケージ版の詳細なインストール手順

MySQL 8.0 Windows zipのインストール手順は次のように紹介されています。準備する:...

IOSデータベースアップグレードデータ移行の詳細な例

IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...

Vueはvue-quill-editorリッチテキストエディタを使用し、画像をサーバーにアップロードします。

目次1. 準備2. グローバルコンポーネント quill-editor を定義する1. テンプレート...

Ubuntu 16.04 に Docker と nvidia-docker をインストールするための詳細なチュートリアル

目次DockerのインストールNvidia-docker のインストールDockerのインストール1...

JS での filter() 配列フィルターの使用

目次1. はじめに2. 方法の紹介3. 使用例要約する1. はじめに配列フィルターは、フロントエンド...

jQuery エディタ プラグイン tinyMCE の使い方

簡略化されたファイル サイズを変更し、サンプルをダウンロードします。ファイルをローカル コンピュータ...