DockerはWindowsやLinuxコンテナとネットワークを共有します
同じネットワーク内で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の間でネットワークを共有する正しい方法は何でしょうか?
回答
[Linuxコンテナに切り替える]オプションを切り替えると、Dockerは、Dockerが実行されているLinuxVMとWindowsオペレーティングシステムの間でコンテキストを切り替えます。
これを行うと、お互いを認識していない別のDockerリソースのセットに効果的に切り替えることになります。それらは別々のオペレーティングシステム上にあります。残念ながら、composeは常に単一のデーモンで実行され、単一のデーモンは単一のオペレーティングシステムで実行されるため、composeで実行しようとしていることを実行することはできません。ただし、独自のLinux VMをセットアップし、それにdockerをインストールして、WindowsマシンとLinuxVMで構成される2ノードの群れを作成することもできます。そうすれば、一方でLinuxコンテナーを実行し、もう一方でWindowsコンテナーを実行し、ネットワークを介してそれらを接続できます。