Docker コンテナと従来の仮想化の違いは何ですか?
違い: 1. 従来の仮想化の作成速度は非常に遅いですが、コンテナ仮想化の作成速度は非常に速いです; 2. 従来の仮想化はシステム調整チェーンにリンクを追加し、パフォーマンスの損失を引き起こしますが、コンテナ仮想化は共通のコアを持ち、パフォーマンスの損失はほとんどありません; 3. 従来の仮想化は複数のオペレーティング システムをサポートしますが、コンテナ仮想化はカーネルがサポートするオペレーティング システムのみをサポートします。
このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
Docker コンテナと従来の仮想化の違いは何ですか
従来の仮想化テクノロジ
仮想化とは、仮想化テクノロジの論理コンピュータによって 1 台のコンピュータを複数のコンピュータに仮想化することを指します。 1台の計算機上で複数の論理計算機を同時に動作させることができ、論理計算機ごとに異なるOSを実行することができ、アプリケーションを互いに影響を与えることなく独立した空間で実行できるため、計算機の作業効率が大幅に向上します。
ハードウェア メーカーの継続的な開発により、仮想マシン内の多くの命令は、仮想ハードウェア層を経由して実際のハードウェア層に到達する必要がなくなりました。ハードウェア メーカーは、仮想マシン内でハードウェアを直接操作する実用的な命令をサポートしています。私たちがハードウェア支援仮想化と呼ぶテクノロジーは、ソフトウェア仮想化のハードウェア層と比較して、この種のハードウェア支援仮想化では、すべてのハードウェアをシミュレートする必要がありません。一部の命令は仮想マシン上で直接実行され、ハードウェアを操作します。パフォーマンス
システムレベルの仮想化
特徴:
ハードウェア層をシミュレートする必要はありません。
カーネルを共有します。同じホスト
従来の仮想化とコンテナ仮想化の違い
コンテナのコアテクノロジー
1.CGroupコンテナのリソース使用量を制限します。
2.コンテナ間の分離を実現するための名前空間メカニズム
3.chroot、ファイル システムの分離。
CGroup:
Linux カーネルは、プロセス グループによって使用されるリソースの制限、記録、分離を提供します。Google エンジニアによって提案され、バックグラウンドはカーネルに統合されます。さまざまなリソース使用量の制御と記録は、さまざまなサブシステムを通じて実現されます。
/sys/fs/cgroup
Namespace :
pid: コンテナが独自のプロセステーブルとスレッド番号 1 を持っています。
net: コンテナが独自のネットワーク情報を持っています
ipc: ipc 通信中、プロセスを識別するには追加情報を追加する必要があります
mnt: 各コンテナーには独自の一意のディレクトリ マウントがあります
utc: 各コンテナーには独立したホスト名とドメイン
chrootがあります:
ホスト内の特定のディレクトリは、コンテナ内のルート ディレクトリです。
すべてのアプリケーションには独自の依存関係があり、その中にはソフトウェア リソースとハードウェア リソースが含まれます。 Docker は、各アプリケーションをコンテナーにパッケージ化することで依存関係を分離する、開発者向けのオープン プラットフォームです。コンテナーは、数千ノードまで拡張できる軽量の仮想マシンのようなもので、異なる仮想環境で同じアプリケーションを実行することでクラウドの移植性を高めるのに役立ちます。仮想マシンは、仮想マシンを使用して分離とリソース制御を実現するためにクラウド コンピューティングで広く使用されています。仮想マシンは、独自のメモリ管理を備えた完全なオペレーティング システムをロードし、高可用性を確保しながらアプリケーションの効率と安全性を高めます。
Docker コンテナと仮想マシンの違いは何ですか?
仮想マシンには完全なオペレーティング システムが搭載されており、独自のメモリ管理は関連する仮想デバイスを通じてサポートされます。仮想マシンでは、効率的なリソースがユーザーのオペレーティング システムとハイパーバイザーに割り当てられ、1 つ以上のオペレーティング システムの複数のインスタンスを 1 台のコンピューター (またはホスト) 上で並行して実行できます。各ゲスト オペレーティング システムは、ホスト システム内で単一のエンティティとして実行されます。
一方、Docker コンテナは、ハイパーバイザーではなく Docker エンジンを使用して実行されます。したがって、コンテナーは仮想マシンよりも小さく、ホスト カーネルの共有により高速に起動でき、パフォーマンスが向上し、分離が少なく、互換性が向上します。 Docker コンテナーはカーネルを共有し、アプリケーション ライブラリを共有できるため、コンテナーは仮想マシンよりもシステム オーバーヘッドが低くなります。ユーザーが共有オペレーティング システムを提供するために単一のプラットフォームを使用する意思がある限り、コンテナーは高速になり、使用するリソースも少なくなります。仮想マシンの作成と起動には数分かかる場合がありますが、コンテナの作成と起動にはわずか数秒しかかかりません。コンテナーに含まれるアプリケーションは、仮想マシンでアプリケーションを実行する場合に比べて優れたパフォーマンスを提供します。
Docker コンテナが仮想マシンよりも弱いことを示す重要な指標の 1 つは「分離」です。 Intel の VT-d および VT-x テクノロジは、仮想マシンにリング 1 ハードウェア分離テクノロジを提供するため、仮想マシンはそのテクノロジを最大限に活用できます。これにより、仮想マシンがリソースを効率的に使用し、相互の干渉を防ぐことができます。また、Docker コンテナにはハードウェア分離機能がないため、攻撃に対して脆弱になります。
どうやって選べばいいの?
コンテナーまたは仮想マシンの選択は、アプリケーションの設計方法によって異なります。アプリケーションがスケーラビリティと高可用性を提供するように設計されている場合は、コンテナが最適な選択です。それ以外の場合は、アプリケーションを仮想マシンに配置できます。データベース サービスなど、高い I/O 要件があるビジネスの場合は、Docker 物理マシンをデプロイすることをお勧めします。これは、Docker を仮想マシンにデプロイすると、仮想マシンによって I/O パフォーマンスが制限されるためです。テナントの権限やセキュリティを重視する仮想デスクトップ サービスなどのビジネスには、仮想マシンの使用をお勧めします。仮想マシンのマルチテナントの強力な分離機能により、テナントが仮想マシン上で root 権限を持っている間、他のテナントやホストは安全であることが保証されます。 。
あるいは、より良いオプションは、仮想マシンでコンテナを実行するハイブリッド ソリューションです。 Docker コンテナは仮想マシン内で実行でき、実証済みの分離、セキュリティ特性、モビリティ、動的仮想ネットワーキングなどを仮想マシンに提供します。安全な分離とリソースの高い利用率を実現するには、基本的に、異なるテナントのビジネス運営に仮想マシンの分離を使用するという考えに従い、同じタイプのビジネスを同じコンテナーのセットにデプロイする必要があります。
結論
Docker コンテナは、DevOps 環境における重要なツールになりつつあります。 DevOps の世界には、Docker コンテナの使用例が数多くあります。 Docker コンテナ上でアプリケーションを実行し、どこにでも (クラウド、オンプレミス、または Linux のいずれか) にデプロイすることが現実になりました。
異種環境で動作する仮想マシンは高度な柔軟性を提供しますが、Docker コンテナは主にアプリケーションとその依存関係に焦点を当てています。 Docker コンテナを使用すると、各クラウドの仮想マシン環境を使用してクラウドを処理することにより、クラウド間でアプリケーション スタックを簡単に移植できます。これは、Docker コンテナーがなければ、より複雑で退屈な方法で実装する必要がある便利な機能を表しています。ここで説明するのは仮想マシンを放棄するということではなく、必要に応じて仮想マシンに加えて実態に応じてDockerコンテナを利用するというものであり、Dockerコンテナによって仮想マシンが完全に不要になるとは考えていません。
推奨される学習: 「docker ビデオ チュートリアル 」
以上がDocker コンテナと従来の仮想化の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Dockerコンテナを終了する4つの方法:コンテナ端子でCtrl Dを使用するコンテナターミナルに出口コマンドを入力しますDocker stop< container_name>コマンドを使用するDocker Kill< container_name>ホストターミナルのコマンド(フォース出口)

Dockerの外部ホストにファイルをコピーする方法:Docker CPコマンドを使用:Docker CP [Options]< Container Path> <ホストパス>。データボリュームの使用:ホストにディレクトリを作成し、-vパラメーターを使用してコンテナを作成するときにディレクトリをコンテナにマウントして、双方向ファイルの同期を実現します。

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Dockerコンテナを再起動する方法:コンテナID(Docker PS)を取得します。コンテナを停止します(docker stop< container_id>);コンテナを起動します(docker start< container_id>);再起動が成功していることを確認します(Docker PS)。その他の方法:Docker Compose(Docker-Compose Restart)またはDocker API(Dockerドキュメントを参照)。

Dockerプロセス表示方法:1。DockerCLIコマンド:Docker PS; 2。SystemDCLIコマンド:SystemCTL Status Docker; 3。CLIコマンドを作成するDocker:Docker-Compose PS。 4。プロセスエクスプローラー(Windows); 5。 /procディレクトリ(Linux)。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。
