docker compartilha rede com contêineres windows e linux

Aug 17 2020

Gostaria de conectar um container windows e um linux dentro da mesma rede.

Primeiro, crio uma rede (o Docker para Windows está definido como "Windows Containers"):

docker network create --driver nat mynet

A rede é criada e docker network lslista a nova rede.

docker-compose.yml do windows e do serviço linux contém:

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

Com docker-compose upo contêiner do Windows inicia bem, após "Switch to Linux Containers" e tentando iniciar o contêiner do Linux, o seguinte erro é mostrado:

ERRO: Rede mynet declarada como externa, mas não foi encontrada. Crie a rede manualmente usando docker network create mynete tente novamente.

Também docker network lsnão lista mais a rede.

Qual seria a maneira correta de compartilhar uma rede entre windows e linux?

Respostas

1 CharlesDesbiens Aug 17 2020 at 08:18

Alternar a opção 'Alternar para contêineres do Linux "faz com que seu Docker alterne contextos entre um linux vm que o Docker executa e um sistema operacional Windows.

Ao fazer isso, você está efetivamente mudando para um conjunto diferente de recursos do docker que não estão cientes uns dos outros. Eles estão em sistemas operacionais separados. Infelizmente, você não pode fazer o que está tentando fazer com o compose, já que o compose sempre será executado em um único Daemon, e um único Daemon é executado em um único sistema operacional. Mas você pode configurar um linux vm por conta própria, instalar o docker nele e fazer um enxame de 2 nós consistindo em sua máquina Windows e sua VM linux. Dessa forma, você pode executar seus contêineres Linux em um, seus contêineres do Windows no outro e conectá-los por meio de uma rede.