Docker comparte la red con contenedores de Windows y Linux.

Aug 17 2020

Me gustaría conectar un contenedor de Windows y Linux dentro de la misma red.

Primero creo una red (Docker para Windows está configurado en "Contenedores de Windows"):

docker network create --driver nat mynet

La red se crea y docker network lsenumera la nueva red.

docker-compose.yml de Windows y el servicio de Linux contienen:

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

Con docker-compose upel contenedor de Windows comienza bien, después de "Cambiar a contenedores de Linux" e intentar iniciar el contenedor de Linux, se muestra el siguiente error:

ERROR: Red mynet declarada como externa, pero no se pudo encontrar. Cree la red manualmente docker network create mynete inténtelo de nuevo.

Además, docker network lsya no incluye la red.

¿Cuál sería la forma correcta de compartir una red entre Windows y Linux?

Respuestas

1 CharlesDesbiens Aug 17 2020 at 08:18

Alternar la opción "Cambiar a contenedores de Linux" hace que su Docker cambie de contexto entre una máquina virtual de Linux sobre la que se ejecuta Docker y un sistema operativo Windows.

Cuando hace esto, está cambiando efectivamente a un conjunto diferente de recursos de la ventana acoplable que no se conocen entre sí. Están en sistemas operativos separados. Desafortunadamente, no puede hacer lo que está tratando de hacer con compose, ya que compose siempre se ejecutará en un solo Daemon, y un solo Daemon se ejecutará en un solo sistema operativo. Pero puede configurar su propia máquina virtual Linux, instalar Docker en ella y hacer un enjambre de 2 nodos que consista en su máquina Windows y su máquina virtual Linux. De esa manera, podría ejecutar sus contenedores de Linux en uno, sus contenedores de Windows en el otro y conectarlos a través de una red.