Dockerでは、コンテナをOSに依存しないようにできますか?


9

現在、Windowsベースのサーバーを使用して2つのVMをホストしています。1つのVMはWindowsアプリでWindowsを使用し、もう1つのVMはLinuxアプリでLinuxを使用します。

以下のシナリオは可能ですか?

Windows 2016(VMなし)を備えたベアサーバー。Dockerエンジンをインストールします。Windowsアプリコンテナーをインストールします。Linuxアプリコンテナーをインストールします。

DockerエンジンはOSを抽象化して、この構成で両方のアプリを実行できるようにしますか?Dockerエンジンは、JavaコードをさまざまなOSで実行する方法に似た「インタープリター」として機能するという意味ですか?


1
詳細はここにあります。主に、Linuxカーネルを提供するためにLinuxコンテナーを実行するにはLinux VMが必要です... dockerコンテナーは分離されたプロセスであるため、ホストが必要です。使用する。
Tensibai 2017年

これは答えになりませんか?
Dan Cornilescu 2017年

2
@Danは現在、シェフのサミットで、私は、正しい答えを書くには少し短いものだった:)私はちょうどコメント落として
Tensibai

Windowsアプリの動作がわからない場合でも、クロスプラットフォームであるため、ドットネットコアに切り替えることを検討してください。そうすれば、Linuxですべてを実行できます。
フレンジー2017年

回答:


7

DockerエンジンはOSを抽象化して、この構成で両方のアプリを実行できるようにしますか?

いいえ、違います。Dockerは、コンテナー間でカーネル共有するという概念に依存するコアテクノロジーとしてコンテナー化を使用します。1つのDockerイメージがWindowsカーネルに依存し、別のDockerイメージがLinuxカーネルに依存している場合、これら2つのイメージを同じOSで実行することはできません。

Linux DockerをWindowsにインストールすると、実際にはHyper-VでLinux VMが設定されます。LinuxKitの詳細はこちらです。Hyper-Vコンソールを開くと、「MobyLinuxVM」というVMが表示されます。これを抽象化するために行われる多くの作業があります。たとえば、dockerバイナリはLinux VMに接続して、これまでと同じコマンドを実行したり、ホストとVMの間のネットワークがシームレスになったり、ボリュームがマウントされたりすることができます。最終的にはLinux DockerイメージをWindowsで実行できるDockerではなく、単なる古い仮想化です。


2

ホストが仮想化をサポートし、Dockerバイナリを実行できる限り、コンテナで何でも実行できます。


それでも、Windows / Linuxコンテナの実行にはいくつかの詳細があると思いますか?
Peter Muryshkin 2017年

LinuxKitも必要だと思いますが、Linuxで利用できるのと同じ機能が使用できます
Briansbum
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.