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のインストール、イメージの使用、コンテナの操作などについては触れません。この部分については、読者が書籍や公式ドキュメントを読んで習得できることを願っています。 |
<<: 分散会計はすべてブロックチェーンではないので、混同しないでください。
小規模なウェブマスターが運営する数多くのサイトの中には、QQ型サイトという特別なカテゴリがあります。...
MaxCDN の料金とプランは何ですか?あの忌々しい Cloudflare を知っていますか?彼は「...
1月8日、「共存、融合、共創」をテーマにした中国電信西安支社のDICTエコロジカルパートナー会議が成...
世界最高のギターのウェブサイトをデザインしている自分を想像してみてください。このサイトには、さまざま...
Racknerd のユタ州データ センターでは、特別価格の独立サーバーを多数販売しています。現在、こ...
vapornode の最新の格安 VPS プロモーション、フェニックス データ センター、1000M...
ほとんどの企業は、ハイブリッド ワーキング モデルをすでに実装しているか、将来的に実装する予定です。...
著者: 徐明偉楊朔インターネットの急速な発展により、既存の IPv4 (インターネット プロトコル ...
[原文は51CTO.comより] 中国の大手中立クラウドサービスプロバイダーUCloudが主催するT...
2020年9月10日、アマゾンウェブサービス(北京)有限公司(AWS中国)とKPMGエンタープライズ...
Hostodo は、ロサンゼルス、ダラス、マイアミのデータ センターで利用できるハイエンド VPS ...
第11期全国人民代表大会常務委員会第30回会議は、ネットワーク情報保護強化に関する決定草案を審議し、...
2020 年には、マルチクラウド分野では、マルチクラウド管理、「ブティック」クラウド、AI/機械学習...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン建国記念日は常にブランドにとっての「戦場...
Locvpsは現在、米国ロサンゼルスMCデータセンターでのみ事業を展開しており、主にcn2+bgpネ...