docker condivide la rete con contenitori Windows e Linux

Aug 17 2020

Vorrei collegare un contenitore Windows e un container Linux all'interno della stessa rete.

Per prima cosa creo una rete (Docker per Windows è impostato su "Windows Containers"):

docker network create --driver nat mynet

La rete viene creata ed docker network lselenca la nuova rete.

docker-compose.yml delle finestre e del servizio linux contengono:

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

Con docker-compose upil contenitore di Windows si avvia correttamente, dopo "Passa a contenitori Linux" e tentando di avviare il contenitore di Linux viene mostrato il seguente errore:

ERRORE: mynet di rete dichiarato come esterno, ma non è stato trovato. Si prega di creare la rete manualmente utilizzando docker network create mynete riprovare.

Inoltre docker network lsnon elenca più la rete.

Quale sarebbe il modo corretto per condividere una rete tra Windows e Linux?

Risposte

1 CharlesDesbiens Aug 17 2020 at 08:18

L'attivazione dell'opzione "Passa a contenitori Linux" fa sì che Docker cambi contesto avanti e indietro tra un vm Linux su cui Docker gira e un sistema operativo Windows.

Quando si esegue questa operazione, si passa effettivamente a un set diverso di risorse di finestra mobile che non sono a conoscenza l'una dell'altra. Sono su sistemi operativi separati. Sfortunatamente, non puoi fare quello che stai cercando di fare con compose, poiché compose verrà sempre eseguito su un singolo Daemon e un singolo Daemon viene eseguito su un singolo sistema operativo. Ma potresti configurare un tuo VM Linux, installare docker su di esso e creare uno sciame a 2 nodi composto dalla tua macchina Windows e dalla tua VM Linux. In questo modo potresti eseguire i tuoi contenitori Linux su uno, i contenitori Windows sull'altro e collegarli attraverso una rete.