[解決済み】WindowsコンテナをLinux上でホストすることは可能ですか?
質問
Linux上でWindowsコンテナを動作させることは可能ですか?シナリオは、Windows コンテナで書かれたアプリケーションをベースにしています。
.NET
(古いネット)と
Linuxユーザー
を提供するために、Dockerでこれを実行したい。
net462
で書かれたAPIは
localhost
.
からベータ版を使用しています。 Windows版Docker Desktop .
もしそうでないなら、なぜ Windows では Linux コンテナを実行できて、その逆はできないのでしょうか?
ある程度時間が経過し、この質問はよくあることなので。ここで一つ付け加えておくと、回避策は新しいネットスタンダードを使用することです。それによって、私はパック
4.6.2
フレームワークを新しいライブラリに統合しました。
どのように解決するのですか?
TL;DR。
Q: Windows コンテナは Linux 上で動作しますか?
A: いいえ、できません。
コンテナは、基盤となるOSのリソースやドライバを利用しているので、WindowsコンテナはWindowsのみで、LinuxコンテナはLinuxのみで実行することができます。
Q: しかし、Windows用のDockerはどうでしょうか?あるいは他のVMベースのソリューションは?
A: Windows版Dockerを使用することで、以下のようなシミュレーションが可能です。 リナックス コンテナ ウィンドウズ しかし、ボンネットの中ではLinuxのVMが作成されるため、やはり LinuxコンテナはLinux上で実行され、WindowsコンテナはWindows上で実行されます。 .
ボーナス:読む このとても素敵な記事 Windows 上での Linux docker コンテナの実行について。
Q: では、.NET Framework 462 のアプリケーションをコンテナで実行したい場合、どうすればよいのでしょうか?
A: それは場合による いくつかの推奨事項に従ってください。
-
可能であれば、.NET Coreに移行してください。.NET Coreでは、.NET Frameworkのほとんどの主要な機能がサポートされ、.NET Framework 4.8もサポートされるため、.NET Coreに移行する必要があります。 は、.NETフレームワークの最終バージョンとなる
-
.NET Core に移行できない場合 - @Sebastian が言及したように - ライブラリを .NET標準 .NET Framework 4.6.2と.NET Coreの2つのバージョンを持つことができますが、これは必ずしも明らかではありません。Visual Studioは(マルチターゲットで)かなりうまくサポートしていますが、いくつかの依存関係は特別な注意を必要とする場合があります。
-
(あまりお勧めしません) 場合によっては、Windowsコンテナを実行することができます。Windowsコンテナはどんどん成熟してきており、以下のようなプラットフォームでより良いサポートが提供されています。 クーベルネッツ . しかし、.NET Frameworkのコードを実行できるようにするには、約1.4GBを占有する"Server Core"のベースイメージ上で実行する必要があることに変わりはありません。同じように稀なケースとして、コードを .NET Core に移行しても Windowsナノサーバー イメージサイズは95MBです。
古いアップデートも履歴として残す
アップデート2:2018.08
Docker-for-Windowsを使用している場合、WindowsとLinuxの両方のコンテナを実行できるようになりました。 同時に : DockerのWindowsとLinuxのコンテナを同時に実行する
ボーナス 質問とは直接関係ありませんが、Linuxコンテナそのものだけでなく、Kubernetesなどのオーケストレータも実行できるようになりました。 KubernetesがDocker Desktop Stable Channelで利用可能になりました。
2018年時点の更新情報です。
一般的なオリジナル回答は正しい。 しかし 数ヶ月前、dockerは 実験的機能LCOW ( GitHub公式リポジトリ ).
から この記事 :
Docker for Windowsは、すでにLinuxのコンテナを走らせているのでは?そうなんです。 Docker for Windowsは、LinuxとWindowsのコンテナを実行することができます。 Hyper-V Moby Linux VMを使用したLinuxコンテナ用(Docker for Windows 17.10では、このVMはLinuxKitをベースにしています)。
LCOWでLinuxコンテナを実行するためのセットアップは、LCOWよりもずっとシンプルになりました。 従来のアーキテクチャ Hyper-V Linux VMでLinux Dockerを実行する場合。 デーモン、そしてすべてのコンテナ。LCOWでは、Dockerデーモンは Windowsプロセスとして実行されます(Docker Windowsを実行する場合と同じ)。 コンテナ)を起動し、Linuxコンテナを起動するたびにDocker のVMを実行している最小限のHyper-Vハイパーバイザーを起動します。 カーネル、runc、およびその上で実行されるコンテナ・プロセスです。
Dockerのデーモンは1つしかなく、そのデーモンは現在では、「Docker」ではなく「Docker」になっているため はWindows上で動作するため Windows と Linux を同時に動作させることが可能になります。 Dockerコンテナを横に並べて、同じネットワークの名前空間内で . これは は、多くのエキサイティングな開発および生産シナリオを開放することでしょう。 Windows上のDockerユーザー
オリジナルです。
PanagiotisKanavosのコメントにもあるように、コンテナは仮想化のためのものではありませんし ホストマシンのリソースを使用している . そのため、現時点では、Windows コンテナを Linux マシン上で "as-is"実行することはできません。
しかし - Windowsで動作するように、VMを使用して行うことができます。Linuxホスト上にWindowsのVMをインストールすれば、Windowsのコンテナを実行できるようになります。
それを使って、IMHOはこの方法を 生産 の環境は、ベストなアイデアではないでしょう。
また この回答 は、より詳細な情報を提供しています。
関連
-
[解決済み】stdinがターミナルでないため、疑似ターミナルが割り当てられない
-
[解決済み] pkg-configが見つからないエラー
-
[解決済み] sudo: must be setuid root" というメッセージが出るが、sudo は既に root が所有している [closed] 。
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] Dockerでコンテナを一覧表示する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pkg-configが見つからないエラー
-
[解決済み] DiffコマンドとGrepで "バイナリファイル(標準入力)が一致 "と表示される。
-
[解決済み] CHECK_NRPE: Error - SSLハンドシェイクを完了できませんでした。
-
[解決済み] scpでファイルをコピーする:接続がタイムアウトした[closed]。
-
[解決済み] lsコマンドの出力をフィルタリングして、2月に作成されたファイルのみを表示させるにはどうすればよいですか?
-
[解決済み] readChar(con, 5L, useBytes = TRUE)でのエラー:接続を開くことができません。
-
[解決済み] GDB からソースがないとのクレーム
-
[解決済み] php] <defunct>のプロセスを削除することはできますか?
-
[解決済み] CMakeエラーです。このプロジェクトでは次の変数が使用されていますが、NOTFOUND に設定されています。
-
[解決済み】Dockerは仮想マシンとどう違うの?