Docker は最も人気のあるソフトウェア コンテナ プラットフォームなので、Docker の概念を理解するには、まずコンテナから始める必要があります。
この記事では、Docker の概念について比較的詳しく説明するだけであり、Docker 環境のインストールや Docker の一般的な操作やコマンドなどについては説明しません。 まずはコンテナについて理解しましょう コンテナとは何ですか? まず、コンテナのより公式な説明を見てみましょう。
コンテナを一言でまとめると、コンテナは開発、配信、展開のために標準化された単位にパッケージ化されたソフトウェアです。 コンテナのより一般的な説明を見てみましょう。コンテナを一般的な方法で説明すると、ランドセルにさまざまな文房具を入れたり、ワードローブにさまざまな服を入れたり、靴棚にさまざまな靴を入れたりできるように、コンテナは物を保管する場所であると考えます。 現在コンテナと呼ばれているものは、おそらく Web サイト、プログラム、さらにはシステム環境などのアプリケーションに近いものでしょう。 物理マシン、仮想マシン、コンテナの図 仮想マシンとコンテナの比較については後ほど詳しく紹介します。ここでは、物理マシン、仮想マシン、コンテナについての理解を深めるために、インターネット上の画像のみを使用します。 物理マシン 仮想マシン 容器 上記の 3 つの抽象的な図から、大まかに類推してまとめることができます。コンテナーはハードウェアではなくオペレーティング システムを仮想化し、コンテナーは同じオペレーティング システム リソース セットを共有します。 仮想マシン テクノロジーは、ハードウェア セットを仮想化し、その上で完全なオペレーティング システムを実行することです。したがって、コンテナの分離レベルはわずかに低くなります。 上記の説明により、コンテナという馴染みのない概念と馴染みのない概念の両方について、皆さんが予備的な理解を得られたと思います。次に、Docker のいくつかの概念について説明します。 Dockerのいくつかの概念について話す Dockerとは 正直に言うと、Docker が何であるかを説明するのは簡単ではありません。 Docker とは何かを説明する 4 つのポイントを以下に示します。
分離されたプロセスはホストや他の分離されたプロセスから独立しているため、コンテナとも呼ばれます。 Docke はもともと LXC に基づいて実装されました。
Dockerのアイデア:
Docker コンテナの機能:
イメージはファイル システム レイヤーを使用して構築され、いくつかの共通ファイルを共有します。これにより、ディスク使用量が最小限に抑えられ、画像のダウンロードが速くなります。
Docker はデフォルトで最適な分離を提供するため、アプリケーションに問題が発生した場合でも、それは単一のコンテナの問題であり、マシン全体に影響することはありません。 なぜ Docker なのか? Docker を使用すると、次のような利点があります。
コンテナについて話すときは、必ず仮想マシンと比較する必要があります。 コンテナとVM 簡単に言えば、コンテナと仮想マシンはリソースの分離と割り当てに関して同様の利点がありますが、コンテナはハードウェアではなくオペレーティング システムを仮想化するため、移植性と効率性に優れており、機能が異なります。 2つの比較表 従来の仮想マシン テクノロジーは、ハードウェア セットを仮想化し、その上で完全なオペレーティング システムを実行し、その後、システム上で必要なアプリケーション プロセスを実行します。 コンテナ内のアプリケーション プロセスは、ホストのカーネル上で直接実行されます。コンテナには独自のカーネルがなく、ハードウェア仮想化を実行しません。したがって、コンテナは従来の仮想マシンよりも移植性に優れています。 コンテナと仮想マシン (VM) の概要:
仮想マシンと比較すると、コンテナは占有するスペースが少なく(コンテナ イメージのサイズは通常数十メガバイト程度)、瞬時に起動できます。
各 VM には、完全なオペレーティング システム、1 つ以上のアプリケーション、必要なバイナリ、およびライブラリ リソースが含まれているため、大量のスペースを占有します。また、VM の起動も非常に遅いです。 Docker の公式サイトを通じて、Docker の多くの利点を知ることができますが、両者の使用シナリオは異なるため、仮想マシン技術を完全に否定する必要はありません。 仮想マシンは、オペレーティング環境全体を完全に分離するのに適しています。たとえば、クラウド サービス プロバイダーは、さまざまなユーザーを分離するために仮想マシン テクノロジを使用することが多いです。 Docker は、フロントエンド、バックエンド、データベースなどのさまざまなアプリケーションを分離するためによく使用されます。 私としては、誰が誰に代わるかは問題ではなく、両者が調和して共存できると考えています。 Docker には非常に重要な基本概念が 3 つあります。これら 3 つの概念を理解すれば、Docker のライフサイクル全体を理解できるようになります。 Docker の基本概念 Docker には 3 つの基本概念が含まれています。
画像: 特殊なファイルシステム オペレーティング システムはカーネルとユーザー スペースに分かれています。 Linux の場合、カーネルの起動後、ユーザー スペースのサポートを提供するためにルート ファイル システムがマウントされます。 Docker イメージはルート ファイル システムに相当します。 Docker イメージは、コンテナ ランタイムに必要なプログラム、ライブラリ、リソース、構成、およびその他のファイルを提供するだけでなく、ランタイム用に用意されたいくつかの構成パラメーター (匿名ボリューム、環境変数、ユーザーなど) も含む特別なファイル システムです。 イメージには動的なデータは含まれておらず、作成後にその内容は変更されません。 Docker は設計時に、Union FS テクノロジを最大限に活用し、階層型ストレージ アーキテクチャとして設計されました。イメージは実際には複数の層のファイル システムで構成されています。 イメージを構築するときは、前のレイヤーが次のレイヤーの基礎となり、レイヤーごとに構築されます。各レイヤーが構築されると、それ以降は変更されません。次のレイヤーでの変更は、このレイヤーでのみ発生します。 たとえば、前のレイヤーのファイルを削除する操作では、前のレイヤーのファイルは実際には削除されず、現在のレイヤーのファイルが削除済みとしてマークされるだけです。 最終コンテナの実行中、このファイルは表示されませんが、実際には常にイメージに従います。 したがって、イメージを構築するときは、各レイヤーにはそのレイヤーに追加する必要があるものだけが含まれるように細心の注意を払い、レイヤーを構築する前に余分なコンテンツをすべてクリーンアップする必要があります。 階層化ストレージ機能により、画像の再利用やカスタマイズも容易になります。以前に作成したイメージをベース レイヤーとして使用し、さらに新しいレイヤーを追加して必要なものをカスタマイズし、新しいイメージを作成することもできます。 コンテナ: 実行時のエンティティ イメージとコンテナの関係は、オブジェクト指向プログラミングにおけるクラスとインスタンスの関係に似ています。イメージは静的な定義であり、コンテナはイメージの実行時のエンティティです。コンテナは作成、開始、停止、削除、一時停止などが可能です。 コンテナの本質はプロセスですが、ホスト上で直接実行されるプロセスとは異なり、コンテナ プロセスは独自の独立した名前空間で実行されます。前述したように、イメージは階層化ストレージを使用し、コンテナーも同様です。 コンテナストレージ層のライフサイクルはコンテナのライフサイクルと同じです。コンテナが消滅すると、コンテナ ストレージ レイヤーも消滅します。したがって、コンテナが削除されると、コンテナ ストレージ レイヤーに保存されている情報はすべて失われます。 Docker のベスト プラクティスの要件によれば、コンテナーはストレージ層にデータを書き込んではならず、コンテナー ストレージ層はステートレスのままである必要があります。 すべてのファイル書き込み操作では、データ ボリュームを使用するか、ホスト ディレクトリをバインドする必要があります。これらの場所での読み取りと書き込みでは、コンテナ ストレージ層をスキップし、ホスト (またはネットワーク ストレージ) に直接読み取りと書き込みを行うため、パフォーマンスと安定性が向上します。 データ ボリュームのライフ サイクルはコンテナーとは独立しています。コンテナが消えても、データボリュームは消えません。したがって、データ ボリュームを使用した後は、データを失うことなくコンテナーを削除して自由に再実行できます。 ウェアハウス: 画像ファイルを集中的に保存する場所 イメージがビルドされると、現在のホスト上で簡単に実行できます。ただし、このイメージを他のサーバーで使用する必要がある場合は、イメージを集中的に保存および配布するサービスが必要になります。 Docker Registry はそのようなサービスです。 Docker レジストリには複数のリポジトリを含めることができます。各リポジトリには複数のタグを含めることができます。各タグは画像に対応します。 したがって、イメージ リポジトリは、以前使用したコード リポジトリと同様に、Docker がイメージ ファイルを集中的に保存するために使用する場所です。 通常、リポジトリには同じソフトウェアの異なるバージョンのイメージが含まれており、ソフトウェアの異なるバージョンに対応するためにタグがよく使用されます。 <ウェアハウス名>:<ラベル> の形式を使用して、どのバージョンのソフトウェアがミラーであるかを指定できます。タグが指定されていない場合、デフォルトのタグは最新になります。 ここで、Docker Registry パブリック サービスとプライベート Docker Registry の概念を追加します。 Docker Registry パブリック サービスは、ユーザーに公開され、ユーザーがイメージを管理できるレジストリ サービスです。 一般的に、このような公開サービスでは、ユーザーは公開画像を無料でアップロードおよびダウンロードできますが、非公開画像を管理するための有料サービスが提供される場合もあります。 最も一般的に使用されているレジストリ公開サービスは公式の Docker Hub です。これはデフォルトのレジストリでもあり、多数の高品質の公式イメージを備えています。 URL は hub.docker.com/ です。 中国での Docker Hub へのアクセスは遅くなる可能性があります。中国には、Docker Hub と同様のパブリック サービスを提供するクラウド サービス プロバイダーもいくつかあります。 パブリック サービスを使用するだけでなく、ユーザーはローカルでプライベート Docker レジストリを構築することもできます。 Docker は Docker Registry イメージを公式に提供しており、これをプライベート Registry サービスとして直接使用できます。 オープンソースの Docker Registry イメージは、Docker コマンドをサポートするのに十分であり、使用には影響しない Docker Registry API のサーバー側実装のみを提供します。ただし、グラフィカル インターフェイスや、イメージのメンテナンス、ユーザー管理、アクセス制御などの高度な機能は含まれていません。 ***トーク: 構築、出荷、実行 Docker の公式 Web サイトを検索すると、「Docker - あらゆるアプリをどこでもビルド、出荷、実行」という単語が見つかります。 では、Build、Ship、Run は具体的に何を行うのでしょうか?
Docker の実行プロセスは、ウェアハウスに移動してイメージをローカルにプルし、コマンドを使用してイメージを実行してコンテナーに変換することです。 そのため、Docker はよく dock worker または dock loader と呼ばれますが、これは Docker の中国語訳である porter とまったく同じです。 要約する この記事では主にDockerにおける一般的な概念について詳しく説明しますが、Dockerのインストール、イメージの使用、コンテナの操作などについては触れません。この部分については、読者が書籍や公式ドキュメントを読んで習得できることを願っています。 |
<<: 分散会計はすべてブロックチェーンではないので、混同しないでください。
[[268369]]クラウドコンピューティングとは何ですか? 1.1 クラウドコンピューティングの概...
国内のサーバー商人である翔翔クラウド(iprr.cn、B1-5344、〜)は、成都、徳陽、西安、綿陽...
netcloudさん、Host Catが再び導入される理由は、低価格+ONAPPという2点です。 o...
最近、会社のWeiboマーケティングとメールマーケティングを担当しているので、Weiboマーケティン...
デジタル政府とスマートシティ構築の継続的な最適化により、政府部門のビジネスニーズはますます多様化して...
Luobo Dataは香港を拠点に運営している会社であると主張しています。主に香港国際回線(100M...
5月26日、中国情報通信研究院主催の「クラウドネイティブ産業カンファレンス」で、クラウドネイティブ技...
olvpsは設立1周年を記念して、ささやかなプレゼントを贈呈しました。米国西海岸の安昌コンピュータル...
最近、国際的に有名なコンサルティング組織であるガートナーは、中国のセキュリティ市場の調査と中国のセキ...
Chicago Govps が SSD ハード ドライブ (Windows シリーズを除く) VPS...
spinservers は、米国サーバーのプロモーションを新たに開始しました。今回は、e3 のハイエ...
最近、7月のBaiduのアルゴリズム変更の話題に注目する人がおり、アルゴリズム変更によって生じたラン...
友人から、SEO を始めるにはどうしたらいいかとよく聞かれます。私は通常、外部リンクを投稿したり、友...
何をするにも計画を立てる必要があります。そうしないと、時間と労力を無駄にし、2 倍の労力で半分の結果...
コンテナは発売以来、ソフトウェア開発に非常に伝染性の高い興奮と革新をもたらし、大企業からスタートアッ...