docker condivide la rete con contenitori Windows e Linux
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 ls
elenca 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 up
il 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 mynet
e riprovare.
Inoltre docker network ls
non elenca più la rete.
Quale sarebbe il modo corretto per condividere una rete tra Windows e Linux?
Risposte
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.