検索
ホームページ運用・保守Dockerdocker は物理マシン上で実行されますか? それとも仮想マシン上で実行されますか?

Docker は物理マシンでも仮想マシンでも実行でき、仮想マシンでも物理マシンでも、本質的にはレベルであるハードウェアとインフラストラクチャ、およびコンテナの配信方法です。主にソフトウェア中心の問題を解決するために使用され、仮想マシンと物理マシンの両方でコンテナを実行することが可能です。

docker は物理マシン上で実行されますか? それとも仮想マシン上で実行されますか?

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

Docker は物理マシンでも仮想マシンでも実行できます

Docker コンテナは仮想マシンでも物理マシンでも実行できます

は仮想マシンまたは物理マシンです マシンは両方ともハードウェア/インフラストラクチャの配信方法であり、本質的に同じレベルにあります。一方、コンテナは主にソフトウェア中心の一連の問題を解決します

厳密に言えば、コンテナと仮想マシンは階層的なものは、パッケージ化されたソフトウェア環境のコレクションです。

仮想マシンでコンテナを実行することは一般的になってきています。たとえば、AWS のコンテナ サービスは仮想マシンでのみ実行されます。

Docker デーモンは、メイン オペレーティング システムと直接通信して、各 Docker コンテナにリソースを割り当てることができます。また、コンテナをメイン オペレーティング システムから分離し、各コンテナを相互に分離することもできます。 Docker は、フロントエンド、バックエンド、データベースなどのさまざまなアプリケーションを分離するためによく使用されます。

拡張知識:

Docker デーモンは、メイン オペレーティング システムと直接通信して、各 Docker コンテナにリソースを割り当てることができます。また、メイン オペレーティング システムからコンテナを分離することもできます。システムを構築し、各コンテナを相互に分離します。 Docker は、フロントエンド、バックエンド、データベースなどのさまざまなアプリケーションを分離するためによく使用されます。

Docker には、コンパクトさ、迅速な移行と展開、効率的な運用という特徴がありますが、その分離性はサーバー仮想化よりも劣ります。異なるコンテナは異なる運送状 (Docker 上で実行される異なるアプリケーション インスタンス) に属し、それぞれから独立しています。その他(絶縁)。ただし、同じウェアハウス マネージャー (ホスト オペレーティング システム カーネル) によって管理されるため、ウェアハウス マネージャーはすべてのコンテナーの関連情報を確認できます (オペレーティング システム カーネルが共有されるため、関連情報も共有されます)。

仮想マシンは、オペレーティング環境全体を完全に分離することに優れています。たとえば、クラウド サービス プロバイダーは通常、仮想マシン テクノロジを使用してさまざまなユーザーを分離します。仮想マシンの起動には数分かかりますが、Docker コンテナは数ミリ秒で起動できます。オペレーティング システムが肥大化しなければ、Docker はディスク領域やその他のシステム リソースを大幅に節約できます。

サーバー仮想化は、複数の独立した「小さなドック」、つまりドック (物理ホストと仮想化層) 上の倉庫 (仮想マシン) を確立するようなものです。これは完全に独立した (分離された) スペースを持ち、異なる顧客 (仮想マシンの所有者) に属します。各ウェアハウスには独自のウェアハウス マネージャー (現在の仮想マシンのオペレーティング システム カーネル) があり、他のウェアハウスを管理することはできません。情報の共有はありません。

したがって、Docker テクノロジを使用するか、サーバー仮想化テクノロジを使用するか、さまざまなアプリケーション シナリオやニーズに応じて、さまざまな方法を採用する必要があります。

Docker と仮想マシンの実装原理の比較

次の図は、仮想マシンと Docker の実装フレームワークをそれぞれ示しています。

docker は物理マシン上で実行されますか? それとも仮想マシン上で実行されますか?

2 つの図の違いを比較すると、左側の図の仮想マシンのゲスト OS レイヤーとハイパーバイザー レイヤーは、docker の Docker エンジン レイヤーに置き換えられています。仮想マシンのゲスト OS は、仮想マシンにインストールされるオペレーティング システムであり、完全なオペレーティング システム カーネルです。仮想マシンのハイパーバイザ層は、カーネル状態ドライバーとして存在するハードウェア仮想化プラットフォームとして単純に理解できます。ホストOS内で。

仮想マシンがリソース分離を実現する方法は、独立したOSを使用し、ハイパーバイザーを使用してCPU、メモリ、IOデバイスなどを仮想化することです。たとえば、仮想 CPU の場合、ハイパーバイザーは各仮想 CPU のデータ構造を作成し、CPU のすべてのレジスタの値をシミュレートし、必要に応じてこれらの値を追跡および変更します。ほとんどの場合、仮想マシン ソフトウェア コードは、ハイパーバイザーの介入なしにハードウェア上で直接実行されることに注意してください。一部の高い特権リクエストの下でのみ、ゲスト OS はカーネル モードを実行して CPU のレジスタ データを変更する必要があり、ハイパーバイザーが介入して仮想 CPU の状態を変更および維持します。

ハイパーバイザーがメモリを仮想化する方法は、シャドウ ページ テーブルを作成することです。通常の状況では、ページ テーブルを使用して仮想メモリから物理メモリに変換できます。仮想化の場合、いわゆる物理メモリは依然として仮想であるため、シャドウ ページ テーブルは、仮想メモリ -> 仮想物理メモリ -> 実物理メモリを実行する必要があります。

IO デバイス仮想化の場合、ハイパーバイザーがページ フォールトを受信し、仮想物理メモリ アドレスが実際に I/O デバイスに対応していることが判明すると、ハイパーバイザーはソフトウェアを使用してこのデバイスの動作条件をシミュレートし、 を返します。たとえば、CPU がディスクに書き込みたい場合、ハイパーバイザーは対応するデータをホスト OS ファイルに書き込みます。このファイルは実際には仮想ディスクをシミュレートします。

仮想マシンのリソースと環境を分離するソリューションと比較すると、docker ははるかにシンプルです。 Docker Engine は、単純に Linux の NameSpace、Cgroup、およびイメージ管理ファイル システム操作のカプセル化として見ることができます。 Docker は、仮想マシンのような完全に独立したゲスト OS を使用せずに、現在 Linux カーネル自体がサポートしているコンテナ方式を使用して、リソースと環境の分離を実現します。簡単に言うと、docker はネームスペースを使用してシステム環境を分離し、Cgroup を使用してリソース制限を実装し、ミラーリングを使用してルート ディレクトリ環境を分離します。

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

以上がdocker は物理マシン上で実行されますか? それとも仮想マシン上で実行されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Docker:移植性とスケーラビリティのためのコンテナ化アプリケーションDocker:移植性とスケーラビリティのためのコンテナ化アプリケーションApr 16, 2025 am 12:09 AM

Dockerは、アプリケーションのパッケージ化、配布、およびアプリケーションの携帯性とスケーラビリティを改善するために使用されるLinuxコンテナテクノロジーベースのツールです。 1)DockerBuildおよびDockerrunコマンドを使用して、Dockerコンテナを構築および実行できます。 2)DockerComposeを使用して、マルチコンテナーDockerアプリケーションを定義および実行して、マイクロサービス管理を簡素化します。 3)マルチステージの構造を使用すると、画像サイズを最適化し、アプリケーションの起動速度を向上させることができます。 4)コンテナログの表示は、コンテナの問題をデバッグする効果的な方法です。

Dockerによってコンテナを起動する方法Dockerによってコンテナを起動する方法Apr 15, 2025 pm 12:27 PM

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

Dockerからログを表示する方法Dockerからログを表示する方法Apr 15, 2025 pm 12:24 PM

Dockerログを表示する方法は次のとおりです。たとえば、Docker Logsコマンドを使用します。たとえば、Docker logs container_name docker execコマンドを使用して /bin /shを実行し、logファイルを表示します。 cat /var/log/container_name.log docker-compose -f docker-comのDocker ComposeのDocker-Composeログを使用します。

Dockerコンテナの名前を確認する方法Dockerコンテナの名前を確認する方法Apr 15, 2025 pm 12:21 PM

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

Docker用のコンテナを作成する方法Docker用のコンテナを作成する方法Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

Dockerによってコンテナを出る方法Dockerによってコンテナを出る方法Apr 15, 2025 pm 12:15 PM

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

Dockerのファイルを外部にコピーする方法Dockerのファイルを外部にコピーする方法Apr 15, 2025 pm 12:12 PM

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

DockerによるMySQLを開始する方法DockerによるMySQLを開始する方法Apr 15, 2025 pm 12:09 PM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター