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

推薦する

KTLツールはMySQLからMySQLへのデータの同期方法を実現します

ktl ツールを使用して、mysql から mysql にデータを同期します。 1. 新しいジョブス...

Postman 自動インターフェーステストの実践

目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...

VMware 仮想マシンでの Centos8 ブリッジの静的 IP 設定方法

1. ネットワーク接続方法がブリッジされていることを確認する物理ネットワーク接続ステータスのコピーを...

タブ切り替え効果を実現するJavaScript

この記事では、タブ切り替え効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...

Linux の一般的なテキスト処理コマンドと vim テキストエディタ

今日は、いくつかの一般的なテキスト処理コマンドとvimテキストエディタを紹介します。 3日目 - 一...

JavaScript 関数はランダムな色の検証コードをカプセル化します (完全なコード)

数字、文字、またはランダムな色の数字と文字の混合で構成される n 桁の確認コード。以下に完全なコード...

アイデアを war パッケージにパッケージ化し、tomcat にデプロイしてアクセス パスの問題 (図とテキスト)

Web プロジェクトを war にパッケージ化するアイデアにとって最も重要なことは、アトリフィカを...

2級コンピュータ試験のMySQL知識ポイント mysql alterコマンド

テーブル構造を編集するための MySQL の alter コマンドの使用。具体的な内容は以下のとおり...

16 の XHTML1.0 と HTML の互換性ガイドラインの概要

1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...

一般的なメールボックスで正常に表示できる HTML メールを作成するためのヒント

HTML メールを送信するためのヒント: スタイルを使用してインライン CSS を記述する、使用する...

Windows Server 2008 R2 リモート デスクトップのポート 3389 を変更する方法

Windows サーバー リモート デスクトップのデフォルトのポート番号は 3389 です。職場でサ...

MySQL ストレージ エンジン MyISAM と InnoDB の違いの概要

1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...

MAC で MySQL のデフォルトの文字セットを utf8 に変更する方法

1. デフォルトでインストールされているMySQLの文字セットを確認するmysql> '...

MySQL InnoDB ロックの概要

目次1. 共有ロックと排他ロック2. 意図ロック3. レコードロック4. ギャップロック5. ネクス...

nginxリバースプロキシによるセッション障害の問題の解決策

同僚から助けを求められました。バックエンド システムへのログインは成功したものの、システムには正常に...