ホームページ  >  記事  >  運用・保守  >  docker はコンテナですか?

docker はコンテナですか?

WBOY
WBOYオリジナル
2022-06-17 10:32:517579ブラウズ

Docker はコンテナではありません。コンテナは、開発、配布、デプロイメントのためにコードとすべての依存ソフトウェアをパッケージ化するための標準単位であり、アプリケーションをある環境から別の環境へ迅速かつ確実に実行できるようにします。は、コンテナ テクノロジの実装であり、コンテナの管理に使用されるオープン ソース アプリケーション コンテナ エンジンです。

docker はコンテナですか?

このチュートリアルの動作環境: linux7.3 システム、docker バージョン 19.03、Dell G3 コンピューター。

Docker はコンテナではありません

Docker とコンテナの関係

さて、コンテナというと、最初に思い浮かぶのは Docker ですが、コンテナは Docker と同じではありません。Docker はコンテナ テクノロジの実装にすぎず、VMware が仮想マシンの実装であるのと同じように、コンテナの管理に使用されます。 Docker の他に、 LXC/LXD 、 rkt 、その他のコンテナー技術の実装もありますが、Docker が最も有名です。

コンテナとは

Docker公式のコンテナの説明を一言で言うと、コンテナ(Container)とはソフトウェアを標準化された単位にパッケージ化したものです。 . 開発、配信、展開のため。コンテナは、コードとそれに依存するすべてのソフトウェアをパッケージ化するための標準ユニットであり、アプリケーションをある環境から別の環境へ迅速かつ確実に実行できるようにします。コンテナー イメージは、コード、ランタイム環境、システム ツール、システム ライブラリ、設定など、ソフトウェアの実行に必要なすべてが含まれる軽量の実行可能な独立したソフトウェア パッケージです。コンテナ化されたソフトウェアは Linux および Windows ベースのアプリケーションで利用でき、どのような環境でも一貫して実行されます。コンテナーはソフトウェアに独立性を与え、ソフトウェアをその環境から分離し、開発環境やステージング環境などの異なる環境間でソフトウェアが均一に実行されるようにします。

コンテナは、アプリケーション (コンパイル済み) コードと実行時に必要な依存関係をパッケージ化するために使用されるテクノロジでもあります。各コンテナーの実行は繰り返すことができ、依存関係を含めることによる標準化により、コンテナーを実行するどの環境でも同じ動作が得られます。コンテナーはアプリケーションをホスト インフラストラクチャから分離し、異なるクラウドおよびオペレーティング システム環境間での展開を容易にします。コンテナーは不変であり、実行中のコンテナーのコードは変更できません。コンテナ化されたアプリケーションを変更する必要がある場合は、変更を含む新しいコンテナを構築し、更新されたイメージからコンテナを再作成する必要があります。

コンテナ テクノロジは基本的にシステム リソースを分離して制御し、コンテナ プロセスが独自の独立した名前空間で実行できるようにします。コンテナは独自のファイル システム、ネットワーク構成、プロセス スペースなどを持つことができ、コンテナ内のプロセスは隔離された環境で実行されます。これはホストから独立したシステム内で動作しているようなものであり、コンテナは非常に便利です。どこでも実行できます。 。

コンテナの利点

コンテナの主な利点は次のように要約されます:

  • 使いやすく効率的: 比較仮想マシン イメージを使用すると、コンテナ イメージが使いやすく、より効率的になります。コンテナーはサイズが小さく、起動が速く、外部のインフラストラクチャ環境に束縛される必要がないため、開発環境から実稼働環境までの一貫性の問題を完全に解決します。

  • 監視と管理: コンテナーは仮想マシンよりも透過的であり、監視と管理が容易です。特に、コンテナ プロセスのライフ サイクルは、プロセス マネージャーによってコンテナ内に隠蔽されるのではなく、インフラストラクチャによって管理されます。最後に、各アプリケーションはコンテナーにパッケージ化され、コンテナーのデプロイメントの管理はアプリケーションのデプロイメントの管理と同等です。

  • 継続的な統合と展開: コンテナーは環境の違いを排除し、アプリケーションのライフサイクル環境の一貫性と標準化を保証します。開発者はイメージを使用して標準開発環境を構築します。開発が完了すると、完全な環境とアプリケーション イメージがパッケージ化されます。テストおよび運用担当者は、テストとリリースのためにイメージを直接展開できるため、継続的な統合、テスト、リリースのプロセスが簡素化されます。

  • 環境の標準化とバージョン管理: コンテナーによって提供される環境の一貫性と標準化に基づいて、コンテナー イメージのバージョン管理が可能です。つまり、オペレーティング環境全体のバージョン管理が可能です。信頼性が高く、頻繁にコンテナ イメージの構築、展開、ロールバックを迅速かつ簡単に提供します。

  • 効率的なリソースの利用と分離: コンテナにはハイパーバイザーによる追加のオーバーヘッドがなく、オペレーティング システムを基礎となるレイヤーと共有します。優れたパフォーマンスと低いシステム負荷を備え、より多くのアプリケーション インスタンスを実行できます。システムリソースを最大限に活用してください。コンテナーは優れたリソース分離機能と制御機能も備えており、アプリケーションが相互に影響を及ぼさないようにシステム リソースを正確に割り当てることができます。

  • Observable: オペレーティング システムからだけでなく、アプリケーション自体からの情報やメトリクスも表示します。

  • クラウドと OS ディストリビューションのポータビリティ: Ubuntu、RHEL、CoreOS、物理マシン、GKE などのあらゆる場所で実行できます。

  • アプリケーション中心: 従来のハードウェアへのオペレーティング システムの展開から、オペレーティング システムへのアプリケーションの展開まで。

  • 疎結合、分散、弾力性のあるマイクロサービス: アプリケーションはより小さく独立したモジュールに分割され、専用デバイス上で大きな単一プログラムを実行するのではなく、動的に管理および展開できます。

Docker とは

Docker は、間違いなく、多くのコンテナ テクノロジのリーダーです。Docker とは何かについては、次の点で要約できます:

Docker は、オープン ソースのコンテナ プロジェクトです。コードは GitHub で維持されており、次のとおりです。 Apache 2.0 プロトコルは Linux Foundation に参加しており、主流のオペレーティング システムとクラウド サービス プロバイダーによってサポートされており、Open Container Alliance (OCI) を設立して推進しています。

Docker は開発と実装に Google の Go 言語を使用しており、Linux カーネルの名前空間 (namespace)、コントロール グループ (cgroup)、および OverlayFS クラスの Union FS に基づいて、プロセスをカプセル化および分離し、オペレーティング システムに属します。システム、仮想化テクノロジーのレベル。分離プロセスはホストや他の分離プロセスから独立しているため、コンテナとも呼ばれます。

Docker はもともと Linux コンテナ (LXC) に基づいて実装されていましたが、後に LXC を独自に開発した libcontainer に置き換え、さらに runc とcontainerd を使用するように進化しました。

Docker は、コンテナ内にアプリケーションを迅速かつ自動的にデプロイできる、効率的で俊敏かつ軽量のコンテナ ソリューションを提供します。オペレーティング システムのカーネル テクノロジを通じてコン​​テナにリソースの分離とセキュリティを提供し、コンテナの作成と保守とサポートを大幅に簡素化します。オンプレミス環境と複数のクラウド プラットフォームへの展開。言い換えれば、Docker はアプリケーションの開発、実行、デプロイメントのためのワンストップ ソリューションを提供します。

runc は、OCI コンテナー ランタイム仕様に従ってコンテナーを作成および実行するために使用される Linux コマンド ライン ツールです。

containerd は、コンテナーのライフサイクルを管理し、コンテナーを実行し、ノード上でイメージを管理するための最小限の機能セットを提供するデーモンです。

Docker の利点

新興の仮想化手法である Docker には、従来の仮想化手法と比較して多くの利点があります。

  • システム リソースのより効率的な使用: コンテナーは、ハードウェアの仮想化や完全なオペレーティング システムの実行などの追加のオーバーヘッドを必要としません。Docker の使用率は高くなります。システム リソースと要求が高くなりますが、小さいほどパフォーマンスが高くなります。同じ構成のホストでは、仮想マシンよりもコンテナを使用して多数のアプリケーションを実行できます。

  • 起動時間の短縮: Docker コンテナ アプリケーションの起動時間は数秒、さらにはミリ秒を達成できます。これにより、開発、テスト、展開にかかる時間を大幅に節約できます。

  • 一貫した実行環境: Docker イメージは、カーネルを除く完全な実行環境を提供し、アプリケーション実行環境の一貫性を確保するため、同じコードが別の環境で失われることがなくなります。 . このタイプの問題を実行します。

  • 継続的デリバリーとデプロイメント: Docker を使用すると、アプリケーション イメージをカスタマイズすることで、継続的インテグレーション、継続的デリバリー、およびデプロイメントを実現できます。開発者は Dockerfile を通じてイメージを構築し、継続的統合システムとの統合テストを実行します。運用および保守担当者は、イメージを実稼働環境に直接迅速にデプロイしたり、自動デプロイメントのために継続的デプロイメント システムと組み合わせて使用​​したりすることもできます。

  • 移行の容易化: Docker は実行環境の一貫性を保証し、実行環境の変更によってアプリケーションが適切に実行されなくなることを心配することなく、異なるプラットフォーム間でアプリケーションを簡単に移行できるようにします。 。

  • メンテナンスと拡張の容易化: Docker で使用される階層化されたストレージとミラーリング テクノロジにより、アプリケーションの繰り返し部分の再利用が容易になり、アプリケーションのメンテナンスと更新も簡単になります。基本イメージに基づいてイメージをさらに拡張することも非常に簡単です。また、Docker は高品質の公式イメージを多数維持しており、アプリケーション サービスのイメージ作成コストをさらに削減します。

  • 優れた分離: Docker は、コンテナーに信頼性の高いリソース分離とセキュリティ保証を提供し、コンテナーがシステム リソースを正確に割り当て、アプリケーションが相互に影響を与えないようにすることができます。

  • 柔軟なスケーリング: サーバー使用量の集中的なバーストの処理とアプリケーションの動的管理に優れています。

推奨学習: 「docker ビデオ チュートリアル

以上がdocker はコンテナですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。