さて、私はあなたが私の以前のブログを読んだことを願っています Docker ここでは、Dockerの基本について説明しました。ここでは、このDocker Containerブログで、DockerContainerとは何かとその仕組みについて説明します。主に、Dockerのハンズオンとユースケースに焦点を当てます。
このDockerContainerブログのトピックをリストアップしました。
- Dockerコンテナが必要な理由
- Dockerコンテナはどのように機能しますか?
- Dockerコンテナのユースケース
Dockerコンテナが必要な理由
私はまだそれを正しく覚えています、私はプロジェクトに取り組んでいました。そのプロジェクトでは、マイクロサービスアーキテクチャに従っていました。マイクロサービスとは何かを知らない方のために、マイクロサービスの概要を説明しますのでご安心ください。
マイクロサービスの背後にある考え方は、特定の種類のアプリケーションが、連携して機能するより小さな構成可能な部分に分割されると、構築と保守が容易になるというものです。各コンポーネントは個別に開発され、アプリケーションは単にその構成コンポーネントの合計になります。
以下の例を検討してください。
Javaでトリムを使用する方法
上の図には、ユーザーアカウント、製品カタログ、注文処理、ショッピングカート用の個別のマイクロサービスを備えたオンラインショップがあります。
このアーキテクチャには多くの利点があります。
- マイクロサービスの1つに障害が発生した場合でも、アプリケーション全体はほとんど影響を受けません。
- 管理が簡単です
他にも多くのメリットがあります。この投稿では、マイクロサービスについて詳しくは説明しません。ただし、まもなくマイクロサービスに関するブログもいくつか作成する予定です。
このアーキテクチャでは、CentOS仮想マシンを使用していました。これらの仮想マシンは、長いスクリプトを作成することによって構成されました。そうですね、これらのVMの構成だけが問題ではありませんでした。
このようなアプリケーションを開発するには、1台のマシンで複数のマイクロサービスを開始する必要があります。したがって、これらのサービスのうち5つを開始する場合は、そのマシンに5つのVMが必要です。次の図を検討してください。
他の問題はかなり一般的です、私はあなたの多くがそれに関係することができることを知っています。このアプリケーションは開発者のラップトップで動作しますが、テストや本番では動作しません。これは、一貫したコンピューティング環境を維持していないことが原因である可能性があります。次の図を検討してください。
これ以外にも多くの問題がありましたが、Dockerコンテナの必要性を説明するにはこれらの問題で十分だと思います。
したがって、すべてのVMに8 GBのRAMを割り当てており、異なる仮想マシンで5つのマイクロサービスを実行している場合を想像してみてください。その場合、これらのVMには40GBのRAMが必要になります。さて、今私は私のホストマシンの構成を非常に高くする必要があります、ほぼ44GBのRAMが私のホストマシンにあるはずです。明らかに、これはそのようなアーキテクチャの持続可能なソリューションではありません。なぜなら、私はここで多くのリソースを浪費しているからです。
結構です。無駄にするリソースはたくさんありますが、それでもソフトウェア配信ライフサイクル(SDLC)に一貫性がないという問題があります。テスト環境と本番環境でこれらのVMを構成する必要があります。そのプロセスのどこかで、一部のソフトウェアがテストサーバーで更新されておらず、開発チームは更新されたバージョンのソフトウェアを使用しています。これは衝突につながります。
100個のVMを使用している場合、各VMの構成には時間がかかり、同時にエラーが発生しやすくなります。
それでは、Docker Containerとは何か、どのように機能するのか、そしてどのように問題が解決したのかを理解しましょう。
Dockerコンテナとは何ですか?
Dockerは、コンテナーを使用してアプリケーションを簡単に作成、デプロイ、実行できるように設計されたツールです。
Dockerコンテナを作成できます。これらのコンテナには、私の場合、アプリケーションまたはマイクロサービスに必要なすべてのバイナリとライブラリが含まれます。つまり、アプリケーションがコンテナー内に存在するか、アプリケーションをコンテナー化しました。これで、同じコンテナーをTest andProd環境で使用できるようになりました。
Docker Containersは、仮想マシンの軽量ソリューションであり、ホストOSを使用します。最良の部分は、RAMをDockerコンテナに事前に割り当てる必要がなく、必要に応じてRAMを使用できることです。そのため、Docker Containerを使用すれば、リソースの浪費について心配する必要はありません。
ここで、Dockerコンテナがどのように機能するかを理解しましょう。
Dockerコンテナはどのように機能しますか?
以下の図は、基本的にDockerの使用方法です。そして、DockerImageとDockerfileについてのアイデアがあると思います。
皆さん、図が少し複雑に見えることは知っていますが、それほど複雑ではないと信じてください。以下は図の説明ですが、その後でも理解しづらいと感じた場合でも、疑問点をコメントしていただければ、早急に対応させていただきます。
- 開発者は、最初にプロジェクトコードをDockerファイルに記述し、次にそのファイルからイメージをビルドします。
- この画像には、プロジェクトコード全体が含まれます。
- これで、このDockerイメージを実行して、必要な数のコンテナーを作成できます。
- このDockerイメージはDockerハブにアップロードできます(基本的にはDockerイメージのクラウドリポジトリであり、パブリックまたはプライベートに保つことができます)。
- Dockerハブ上のこのDockerイメージは、QAやProdなどの他のチームがプルできます。
これにより、リソースの浪費を防ぐだけでなく、開発者のラップトップにあるコンピューティング環境が他のチームにも複製されるようになります。今、Dockerが必要な理由を説明する必要はありません。
これはそれを使用する1つの方法でした。マイクロサービスの問題を解決するためにDockerをどのように使用したかを知りたいと思っている方もいらっしゃると思います。同じことの概要を説明しましょう。
リストを並べ替えるc ++
以下は、図の説明です。
- まず、Dockerfile内に複雑な要件を記述しました。
- 次に、それをGitHubにプッシュしました。
- その後、CIサーバー(Jenkins)を使用しました。
- このJenkinsサーバーはGitからプルダウンし、正確な環境を構築します。これは、本番サーバーとテストサーバーで使用されます。
- テスター向けのステージング環境(ソフトウェアをサーバーに完全にデプロイする前に、テスト目的でサーバーにデプロイすることを指します)にデプロイしました。
- 基本的に、開発、テスト、ステージングで持っていたものを本番環境にロールインしました。
Dockerは私の人生を楽にしてくれたと言っても過言ではありません。
それが私の会社の話でした。インディアナ大学のケーススタディを見てみましょう。 Dockerがどのように問題を解決したか。
インディアナ大学のケーススタディ:
インディアナ大学は、米国インディアナ州にあるマルチキャンパスの公立大学システムです。
問題文
彼らはカスタムスクリプトを使用して、VMにアプリケーションを展開していました。
彼らの環境は、レガシーJavaベースのアプリケーション用に最適化されました。彼らの成長する環境には、Javaベースだけではない新製品が含まれています。学生に可能な限り最高の体験を提供するために、大学はアプリケーションの最新化を開始する必要がありました。
大学は、アプリケーションのマイクロサービスベースのアーキテクチャに移行することで、アプリケーションのアーキテクチャを改善したいと考えていました。
SSNや学生の健康データなどの学生のデータにはセキュリティが必要でした。
解決:
すべての問題はDockerデータセンター(DDC)によって対処されました。次の図を検討してください。
Dockerの信頼できるレジストリ –Dockerイメージを保存します。
UCP(Universal Control Plane)Web UI –クラスター全体を1か所から管理するのに役立ちます。サービスは、DTR(Docker Trusted Registry)に保存されているDockerイメージを使用して、UCP WebUIを使用してデプロイされます。
IT運用チームは、Universal Control Planeを活用して、Dockerがインストールしたソフトウェアをホストにプロビジョニングし、すべてのインフラストラクチャをセットアップするための一連の手動手順を実行することなく、アプリケーションを展開します。
UCPおよびDTRはLDAPサーバーと統合して、アプリケーションへのアクセスを迅速にプロビジョニングします。
以前のブログを読んで、Dockerの基本を学んでいただければ幸いです。
ここで、マルチコンテナアプリケーションにDockerComposeを使用する方法について説明します。
Dockerハンズオン:
Dockerをインストールしていると思います。この投稿ではDockerComposeを使用します。以下では、DockerComposeについて簡単に紹介します。
Docker構成: これは、マルチコンテナのDockerアプリケーションを定義して実行するためのツールです。 Docker Composeを使用すると、Composeファイルを使用してアプリケーションのサービスを構成できます。次に、1つのコマンドを使用して、構成からすべてのサービスを作成して開始できます。
さまざまなコンテナに複数のアプリケーションがあり、それらすべてのコンテナがリンクされているとします。したがって、これらのコンテナを1つずつ実行する必要はありません。ただし、これらのコンテナーを1つのコマンドで実行する必要があります。そこで、DockerComposeが登場します。これを使用すると、1つのコマンドでさまざまなコンテナで複数のアプリケーションを実行できます。つまり、docker-構成します。
例:YAMLファイルに、異なるコンテナーがあり、1つはWebアプリを実行し、もう1つはpostgresを実行し、もう1つはredisを実行しているとします。これはdockercompose fileと呼ばれ、そこから1つのコマンドでこれらのコンテナーを実行できます。
もう1つの例を見てみましょう。
ブログを公開したいとします。そのためにCMS(コンテンツ管理システム)を使用し、wordpressが最も広く使用されているCMSです。基本的に、WordPress用に1つのコンテナーが必要であり、バックエンド用にMySQLとしてもう1つのコンテナーが必要です。そのMySQLコンテナーは、WordPressコンテナーにリンクする必要があります。また、MySQLデータベースにリンクされるPhp Myadmin用のコンテナがもう1つ必要です。これは、基本的に、MySQLデータベースにアクセスするために使用されます。
上記の例を実際に実行してみませんか。
必要な手順:
- DockerComposeをインストールします :
- WordPressをインストールする: 公式を使用します WordPress そして MariaDB Dockerイメージ。
- MariaDBをインストールします。 これは、世界で最も人気のあるデータベースサーバーの1つです。これは、MySQLの元の開発者によって作成されました。 MariaDBは、オープンソースソフトウェアとして開発されており、リレーショナルデータベースとして、データにアクセスするためのSQLインターフェイスを提供します。
- PhpMyAdminをインストールします: これは、PHPで記述されたフリーソフトウェアツールであり、Webを介したMySQLの管理を処理することを目的としています。
- WordPressサイトを作成します。
始めましょう!
DockerComposeをインストールします。
最初にPythonPipをインストールします。
sudo apt-get install python-pip
これで、DockerComposeをインストールできます。
sudo pip install docker-compose
WordPressをインストールします。
WordPressディレクトリを作成します。
mkdirワードプレス
このワードプレスディレクトリを入力してください:
cdワードプレス/
Javaの最良のアイデアは何ですか
このディレクトリでDockerCompose YAMLファイルを作成し、geditを使用して編集します。
sudo gedit docker-compose.yml
そのyamlファイルに以下のコード行を貼り付けます。
wordpress:画像:wordpressリンク:-wordpress_db:mysqlポート:-8080:80 wordpress_db:画像:mariadb環境:MYSQL_ROOT_PASSWORD:edureka phpmyadmin:画像:corbinu / docker-phpmyadminリンク:-wordpress_db:mysqlポート:-8181:80環境: MYSQL_USERNAME:ルートMYSQL_ROOT_PASSWORD:edureka
このコードについて説明してほしいので、このコードの小さなセクションを取り上げて、何が起こっているのかを説明します。
wordpress_db:...環境:MYSQL_ROOT_PASSWORD:edureka..。
これにより、MYSQL_ROOT_PASSWORDと呼ばれるwordpress_dbコンテナ内に希望のパスワードで環境変数が設定されます。 MariaDB Dockerイメージは、起動時にこの環境変数をチェックするように構成されており、MYSQL_ROOT_PASSWORDとして定義されたパスワードを持つrootアカウントでDBをセットアップします。
ワードプレス:...ポート:-8080:80..。
最初のポート番号はホストのポート番号であり、2番目のポート番号はコンテナー内のポートです。したがって、この構成では、ホストのポート8080での要求が、コンテナー内のデフォルトのWebサーバーのポート80に転送されます。
phpmyadmin:画像:corbinu / docker-phpmyadminリンク:-wordpress_db:mysqlポート:-8181:80環境:MYSQL_USERNAME:ルートMYSQL_ROOT_PASSWORD:edureka
これは、コミュニティメンバーcorbinuによってdocker-phpmyadminを取得し、mysqlという名前のwordpress_dbコンテナーにリンクし(phpmyadminコンテナー内から、ホスト名mysqlへの参照がwordpress_dbコンテナーに転送されることを意味します)、ポート80をポート8181に公開します。ホストシステム、そして最後に、MariaDBのユーザー名とパスワードを使用していくつかの環境変数を設定します。このイメージは、wordpressイメージのように、wordpress_dbcontainerの環境からMYSQL_ROOT_PASSWORD環境変数を自動的に取得しません。実際には、MYSQL_ROOT_PASSWORD:edureka行をwordpress_dbコンテナーからコピーし、ユーザー名をrootに設定する必要があります。
次に、アプリケーショングループを起動します。
docker-compose up -d
あなたがしなければならないのはそれだけです。この方法でコンテナをいくつでも追加し、好きな方法でそれらをすべてリンクすることができます。
次に、ブラウザで、以下に示すように、パブリックIPまたはホスト名を使用してポート8080に移動します。
localhost:8080
このフォームに記入し、WordPressのインストールをクリックしてください。
完了したら、サーバーのIPアドレスに再度アクセスします(今回はポート8181を使用します(例:localhost:8181))。 phpMyAdminのログイン画面が表示されます。
先に進み、YAMLファイルで設定したユーザー名rootとパスワードを使用してログインすると、データベースを参照できるようになります。サーバーには、WordPressインストールからのすべてのデータを含むWordPressデータベースが含まれていることがわかります。
ここで、DockerContainerブログを終了します。この投稿を楽しんでいただけたでしょうか。確認してもいい 他のブログ Dockerの基本を扱ったシリーズでも。
このDockerContainerブログに関連性があると思われる場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 Edureka DevOps認定トレーニングコースは、学習者がSDLCの複数のステップを自動化するためのPuppet、Jenkins、Docker、Nagios、Ansible、Chef、Saltstack、GITなどのさまざまなDevOpsプロセスとツールに関する専門知識を習得するのに役立ちます。
質問がありますか?コメント欄にご記入ください。折り返しご連絡いたします。