Dockerの概要:アーキテクチャ、ワークフローとは

公開: 2020-04-27

目次

仮想化の歴史

それほど昔のことではありませんが、サービスの展開は時間がかかり、苦痛を伴うプロセスでした。 このプロセスには、開発チームによるコードの記述と、運用チームによる金属マシンへの展開が含まれていました。 運用チームは、コードを機能させるために言語コンパイラ、ライブラリ、およびパッチを探す必要があったため、作業を切り詰めていました。

プロセスにエラーやバグがある場合は、最初からやり直す必要があります。開発チームがバグやエラーを修正し、運用チームがコードのデプロイを再開します。

ハイパーバイザーが開発されたとき、状況は少し良くなりました。 では、ハイパーバイザーとは何ですか? これらは、特に使用されていないときに定期的に実行またはオフにされる可能性のある仮想マシン(VM)のコレクションです。 仮想マシンは、エラーの修正とコードの展開のプロセスを加速することで確実に役立ちましたが、それでもいくつかの問題がありました。 Dockerコンテナーは、真のゲームチェンジャーとして登場しました。 彼らは、仮想マシンに存在する問題にも対処しました。

読む: Kubernetes Vs. Docker:主な違い

Dockerとは何ですか?

これは、アプリケーションを実行、パッケージ化、および配布するために世界中の開発者によって使用されるオープンソースプラットフォームです。 Dockerは、アプリケーションのカプセル化のプロセスを最初のステップから最後のステップまで、非常に簡単かつ効率的にします。 Dockerをよりよく理解するには、コンテナーとは何か、コンテナーがどのように機能するかを理解する必要があります。

コンテナは、それを実行するために必要なすべてのものが付属しているソフトウェアの一部のスタンドアロンで軽量で実行可能なパッケージに他なりません。 コンテナはプラットフォームに依存していません。 そのため、DockerはWindowsとLinuxベースのマシンの両方と互換性があります。 また、必要に応じて、仮想マシンでDockerを実行することもできます。 Dockerが達成しようとしている基本的な目的は、開発者が分散アーキテクチャを使用してマイクロサービスアプリケーションを実行できるようにすることです。

ハードウェアの抽象化を実行していた仮想マシンとは異なり、Dockerはレベルを上げて、OSレベルで異なるリソースセットの抽象化を実行します。 これには、インフラストラクチャの分離やアプリケーションの移植性など、いくつかの利点があります。 つまり、ハードウェアサーバーを抽象化するために使用された仮想マシンとは異なり、DockerのコンテナーベースのアプローチはOSコアを抽象化することで機能します。 これは、仮想化の優れた代替手段であり、軽量インスタンスの作成を高速化します。 Dockerには2つのバージョンがあります。

Enterprise Edition(EE):

このバージョンは、ITチームおよびエンタープライズ開発向けに特別に設計されています。 このバージョンは、アプリケーションの開発、出荷、および実行に使用されます。

Community Edition(CE):

このバージョンは、コンテナーベースのアプリを検討している、またはDockerを使い始めている個人や小規模なチームによって使用されます。

読む:フルスタックプロジェクトのアイデアとトピック

Dockerワークフロー

このセクションでは、Dockerエンジンとそのさまざまなコンポーネントに焦点を当てます。 これは、Dockerアーキテクチャに進む前に、Dockerがどのように機能するかをよりよく理解するのに役立ちます。 Docker Engineは、このコンテナーベースのアプリを使用してさまざまな機能を実行するための開発を可能にするパワーです。 以下にリストされているコンポーネントを使用して、アプリケーションを構築、パッケージ化、出荷、および実行できます。

1.Dockerデーモン

これは、イメージ、ストレージボリューム、ネットワーク、およびコンテナーの管理を支援するために継続的に機能するバックグラウンドプロセスです。 それらを処理するためのDockerAPIリクエストを常に探しています。

2. DockerCLI

これは、Dockerデーモンと対話するインターフェースクライアントです。 これは、開発者がコンテナインスタンスを管理するプロセスを簡素化するのに役立ちます。 これは、開発者が他の同様のアプリケーションよりもDockerを好む主な理由の1つです。

3. Docker Engine Rest API

Dockerデーモンとアプリケーション間の相互作用を容易にします。 これらのAPIにアクセスするには、通常、HTTPクライアントが必要です。

Dockerアーキテクチャ

Dockerアーキテクチャーは、クライアントサーバーベースのアーキテクチャーです。 以下に説明する3つの主要なコンポーネントがあります。

  1. Dockerホスト
  2. Dockerクライアント
  3. Dockerレジストリ
  4. Dockerオブジェクト

初期段階では、Dockerクライアントはデーモンと対話します。デーモンは、Dockerコンテナーの開発、実行、および配布にかかる作業の多くを実行します。

Dockerデーモンとクライアントは、単一のシステムで実行することも、開発者がリモートデーモンを使用してローカルのDockerクライアントに接続することもできます。 Rest APIは、Dockerデーモンとクライアント間の通信を確立するために使用されます。 これは、ネットワークインターフェイスまたはUNIXソケットを介して実行できます。

ここで、Dockerアーキテクチャコンポーネントについて詳しく説明します。

また読む:なぜフルスタック開発者になるのか?

1.Dockerホスト

Dockerホストは、Dockerデーモンの実行を担当します。 Docker Daemonは、特にdockerbuildやdockerrunなどのAPIリクエストを楽しませます。 また、イメージ、ネットワーク、コンテナー、およびその他のDockerオブジェクトを管理します。 デーモンは相互に通信して、さまざまなDockerサービスを管理できます。

2.Dockerクライアント

これは、ユーザーがDockerと対話するために使用する方法に他なりません。 Dockerクライアントは、docker runなどのリクエストを送信し、DockerビルドはDockerデーモンに送信されます。 Dockerクライアントの非常に重要な機能は、複数のデーモンと通信できることです。

3.Dockerレジストリ

レジストリは、スケーラブルでステートレスなサーバー側のアプリケーションです。 Dockerイメージを保存するだけでなく、開発者がそれらを配布することもできます。 Dockerは、独自のイメージを作成する柔軟性を提供します。または、使用できるパブリックレジストリがあります。 これらのレジストリには、 DockerCloudやDockerHubなどが含まれます。

Dockerの構成は、イメージを探すために常にDockerHubやその他のパブリックレジストリを使用するようになっています。 ただし、独自のレジストリを作成するオプションがあります。 そのため、dockerrunおよびdockerpullコマンドを使用して、独自のレジストリを使用して必要なイメージを引き出すことができます。 Docker pushコマンドは、必要なイメージを作成したレジストリにプッシュします。

4.Dockerオブジェクト

Dockerを使用しながら、いくつかのオブジェクトを使用および作成します。 これらのオブジェクトには、コンテナ、イメージ、プラグイン、ボリューム、ネットワークなどが含まれます。

5.Dockerイメージ

Dockerイメージは、コンテナーの作成に必要な指示を提供する読み取り専用のテンプレートに他なりません。 多くの場合、ある画像は別の画像と関連しています。 2つの画像を区別するのは、カスタマイズの追加レイヤーです。 言い換えると、イメージはコンテナーの不変のスナップショットとして定義することもできます。 画像は小さく、軽量で、高速です。

6.Dockerコンテナ

Dockerコンテナーを理解するために、別のアプローチに従ってみましょう。 したがって、クラスを表すために画像を使用できる場合は、コンテナをそのインスタンスにすることができます。 つまり、コンテナはランタイムオブジェクトです。 Docker CLIまたはAPIを使用して、コンテナーを作成、開始、移動、停止、または削除できます。 コンテナをストレージに接続して、1つまたは複数のネットワークに接続することもできます。 コンテナの現在の状態に応じて、新しいイメージを作成することもできます。

結論

Dockerアーキテクチャーとそのコンポーネントが何であるかがわかったので、その人気の高まりを理解するのに適した立場になりました。 インフラストラクチャ管理を簡素化し、インスタンスをより速く、より軽く、より回復力のあるものにするのに役立ちます。

フルスタックコーディングの詳細に興味がある場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のPGディプロマをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクト、および割り当てを提供します。 IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との雇用支援。

未来のキャリアに備える

業界で信頼されている学習-業界で認められた認定。
今すぐ申し込む