问题描述
我想在同一个网络中连接Windows和linux容器。
首先,我创建一个网络(用于Windows的Docker设置为“ Windows容器”):
docker network create --driver nat mynet
网络已创建,并且docker network ls
列出了新网络。
docker-compose.yml 包含:
version: "3"
services:
...
networks:
mynet: {}
networks:
mynet:
external: true
使用docker-compose up
,Windows容器可以正常启动,在“切换到Linux容器”并尝试启动linux容器之后,显示以下错误:
错误:网络mynet声明为外部,但找不到。 请使用
docker network create mynet
手动创建网络 然后重试。
docker network ls
也不再列出网络。
在Windows和Linux之间共享网络的正确方法是什么?
解决方法
切换“切换到Linux容器”选项会使Docker在Docker运行于其上的Linux虚拟机和Windows操作系统之间来回切换上下文。
执行此操作时,实际上是在切换到彼此不认识的另一组docker资源。它们在单独的操作系统上。不幸的是,您无法使用compose进行操作,因为compose将始终在单个Daemon上运行,而单个Daemon在单个操作系统上运行。但是您可以设置自己的linux虚拟机,在其上安装docker,并制作一个由Windows计算机和linux VM组成的2节点群集。这样,您可以在一个容器上运行linux容器,在另一个容器上运行Windows容器,并通过网络连接它们。