Docker はアプリケーションをクロスプラットフォーム化するソリューションですか? 質問する

Docker はアプリケーションをクロスプラットフォーム化するソリューションですか? 質問する

いくつかのブログや紹介資料を読んで、Docker を使い始めています。

私の理解では、Docker は単一のアプリケーションを標準化されたコンテナにラップできます。コンテナはサンドボックス、アプリケーションの実行に必要なすべてのリソースを提供し、内部のアプリケーションは常にそのコンテナ内に存在します。つまり、コンテナをどこにでも (異なる種類の OS やクラウド プラットフォームにも) 出荷でき、正しく実行できるはずです。

私の理解が正しければ、それは Microsoft が Office Suite をコンテナーにラップして、Mac OS または Linux にインストールして実行できるという意味でしょうか? また、他の優れた Mac アプリケーションも Windows や Linux に出荷できるのでしょうか?

ベストアンサー1

Docker は、LXC の上にあるユーザーフレンドリーなレイヤーです。LXC は、ファイルシステム構成、ネットワーク リソース、プロセス テーブル、および歴史的にグローバルであったその他のカーネル媒介リソースの名前空間を可能にする Linux カーネル機能のセットです。(これは、kvm や VMware よりも FreeBSD jail に近いものです)。

これらの機能は Linux に特有のものであり、Docker コンテナで実行されるアプリケーションはホストの Linux カーネルと直接インターフェースしています (ただし、参加している名前空間に公開されているリソースのサブセットにしかアクセスできません)。同様に、オペコードは仮想化のエミュレーションなしでハードウェア上で直接実行されるため、ハードウェアの違いも抽象化されません。

Dockerはこうしてないクロス OS (またはクロス アーキテクチャ) 移植性レイヤーであり、特定のカーネル バージョンに依存するアプリケーションから実装の詳細を隠すことはできず、まったく異なるオペレーティング システムに依存するアプリケーションからは隠すことができません。


2017年初頭のアップデート

Dockerは、Linuxのkvmに非常によく似た軽量仮想化スタックをバンドルすることで、Mac上で動作するようになりました。この方法で実行すると、実際には両方仮想化とコンテナ化 - 前者は (単一の) Linux カーネルを実行し、後者はこのカーネル内で一連の個別のコンテナを実行します。

これは、ネイティブLinuxアプリケーションの実行に限定されており、デスクトップアプリケーション用の表示レイヤーを提供していないことを意味します(X11、VNC、またはそれらに類するものを追加で使用する必要があります)。ただし、仮想化ツールをバンドルすることで、現代のDockerは現在ある種の移植性ソリューション(アーキテクチャ間ではなくプラットフォーム間)。

おすすめ記事