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 ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます! 以下もご興味があるかもしれません:
|
<<: TypeScript ジェネリックを簡単に説明する方法
>>: mysql5.7.21 utf8 エンコーディングの問題と Mac 環境での解決方法
目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...
目次序文解析パラメータURLパラメータを変更する要約する序文URLオブジェクトはページ側ではあまり使...
はじめに: この記事ではreact-native-cliで作成したサンプル プロジェクト (Andr...
背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...
CSSコードコンテンツをクリップボードにコピー.bottomTable{背景色: rgb (249,...
目次Tomcat でプロジェクトを展開する 3 つの方法プロジェクトをwebappsディレクトリに直...
この記事では、JavaScriptキャンバスでミラーイメージ効果を実現するための具体的なコードを参考...
新しいserver.jsを作成する糸初期化 -y 糸を追加エクスプレスノードモン -D var ex...
Ubuntu 15.04 は MySQL リモート ポート 3306 を開きます。以下の操作はすべて...
MySQL 8.0 Windows zipのインストール手順は次のように紹介されています。準備する:...
IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...
目次1. 準備2. グローバルコンポーネント quill-editor を定義する1. テンプレート...
目次DockerのインストールNvidia-docker のインストールDockerのインストール1...
目次1. はじめに2. 方法の紹介3. 使用例要約する1. はじめに配列フィルターは、フロントエンド...
簡略化されたファイル サイズを変更し、サンプルをダウンロードします。ファイルをローカル コンピュータ...