docker与Windows和linux容器共享网络

问题描述

我想在同一个网络中连接Windows和linux容器。

首先,我创建一个网络(用于Windows的Docker设置为“ Windows容器”):

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,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容器,并通过网络连接它们。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...