DockerはWindowsやLinuxコンテナとネットワークを共有します

Aug 17 2020

同じネットワーク内でWindowsとLinuxコンテナを接続したいと思います。

まず、ネットワークを作成します(Docker for Windowsは「WindowsContainers」に設定されています)。

docker network create --driver nat mynet

ネットワークが作成さdocker network lsれ、新しいネットワークが一覧表示されます。

WindowsとLinuxサービスのdocker-compose.ymlには次のものが含まれています。

version: "3"
services:
  ...
    networks:
      mynet: {}
networks:
  mynet:
    external: true

ではdocker-compose upウィンドウコンテナは、「Linuxのコンテナに切り替え」と、次のエラーが示されているLinuxのコンテナを起動しようとした後、罰金を開始します。

エラー:ネットワークmynetが外部として宣言されましたが、見つかりませんでした。を使用docker network create mynetして手動でネットワークを作成し、再試行してください。

またdocker network ls、ネットワークはもうリストされていません。

WindowsとLinuxの間でネットワークを共有する正しい方法は何でしょうか?

回答

1 CharlesDesbiens Aug 17 2020 at 08:18

[Linuxコンテナに切り替える]オプションを切り替えると、Dockerは、Dockerが実行されているLinuxVMとWindowsオペレーティングシステムの間でコンテキストを切り替えます。

これを行うと、お互いを認識していない別のDockerリソースのセットに効果的に切り替えることになります。それらは別々のオペレーティングシステム上にあります。残念ながら、composeは常に単一のデーモンで実行され、単一のデーモンは単一のオペレーティングシステムで実行されるため、composeで実行しようとしていることを実行することはできません。ただし、独自のLinux VMをセットアップし、それにdockerをインストールして、WindowsマシンとLinuxVMで構成される2ノードの群れを作成することもできます。そうすれば、一方でLinuxコンテナーを実行し、もう一方でWindowsコンテナーを実行し、ネットワークを介してそれらを接続できます。