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 、Windows用のドッカー。学習と簡素化の目的で、Linux 環境は使用されませんが、原理と基本的なコマンドは同じです。
関連テクノロジーとナレッジポイント:
maven、spring-boot、spring mvc、spring のアップロードとダウンロード、jquery ajax とアップロード。
実装原則
Docker は外部に豊富なインターフェイス (restfull API など) を提供し、これらのインターフェイスを通じて Docker を管理できます。 docker-java オープン ソース コンポーネントはこのインターフェイスに基づいてカプセル化されているため、開発が容易になります。もちろん、他にもパッケージ化されたコンポーネントが市販されており、自分で比較して学ぶことができます。ここのオープンソース作者に感謝します。
実装プロセスの事前準備
1. Windowsのアップグレード
Windows環境を使用しているため、作者所有のPCがプリインストールされています。 win10 ファミリー バージョンでは、Docker for Windows は仮想化テクノロジを使用するために上位レベルのオペレーティング システムで実行する必要があるため、プロフェッショナル バージョンにアップグレードする必要があります。
アップグレードが必要な場合のアップグレード プロセスは比較的簡単です。簡単に説明すると次のとおりです (すでにプロフェッショナル バージョンである場合はスキップできます):
#クリックして製品パスワードを変更します。プロフェッショナル バージョン キーを入力した後、段階的なアップグレードを待ちます。キーはオンラインで自分で見つけることができますが、とにかくそこにあります。 2. docker for windows をインストールします公式 Web サイトからダウンロードしたら、次の手順に従うだけです。インストール後は勝手に起動し、起動後のツールバーにdockerのロゴが表示されます。 インストールが成功したら、いくつかのコマンドを入力して、インストールが成功したかどうかをテストできます。例: Docker に関する基本情報を表示します。 #3. Docker イメージのアドレスを変更します。 デフォルトのミラー アドレスは遅いため、Tomcat ミラーの長さは 500 メートルを超えます。ネットワークが良好でない場合、ダウンロードは非常に遅くなります。次のように、ミラー アドレスを NetEase のミラー アドレスに構成できます。 4. リモート管理の開始最後の項目を確認してください 中の tcp//xxx がリモート接続アドレスです。 開始後、ブラウザにアドレスを入力して、結果が返されるかどうかを確認します: (このアドレスは、 docker indo を入力するのと同じです。 cmd) 返されるコンテンツは 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 インスタンスの実装) とソース コードのダウンロード
Payこのクラスに注意してください。ルート ディレクトリの下にあるすべてのサブディレクトリが 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 (と対話するコントローラー)インターフェース)。
メインメソッドの紹介:
addcontainer: コンテナの追加とwarパッケージのアップロード
以上がメインコードの説明です。
特定のコードの詳細については、ソース コードをダウンロードし、プロセスに従って表示してください。
実装後のメイン インターフェイス:
これはサンプル プロジェクトであるため、コードは vue およびブートストラップ フレームワークを使用しません。 CSSとJSを自分で書きました。具体的な効果は次のとおりです:
#1. 監視と管理のホームページ #2. コンテナーの追加;#
以上がspringboot と docker-java に基づいて Docker コンテナの動的な管理と監視を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。