2016-04-21 31 views
15

Su sistemi * nix, è possibile legare-montare la presa finestra mobile dalla macchina host per la macchina virtuale facendo qualcosa di simile:Bind per Docker presa su Windows

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

Esiste un equivalente modo per farlo quando si esegue la finestra mobile su un host di Windows?


ho provato varie combinazioni come:

docker run -v tcp://127.0.0.1:2376:/var/run/docker.sock ...

docker run -v "tcp://127.0.0.1:2376":/var/run/docker.sock ...

docker run -v localhost:2376:/var/run/docker.sock ...

nessuno di questi hanno lavorato.

+1

In Windows finestra mobile viene eseguito all'interno di un VirtualBox VM, quindi non sarebbe in grado di legare le risorse di rete da Windows. –

risposta

9

Come il Docker documentation states:

If you are using Docker Machine on Mac or Windows, your Engine daemon has only limited access to your OS X or Windows filesystem. Docker Machine tries to auto-share your /Users (OS X) or C:\Users (Windows) directory. So, you can mount files or directories on OS X using:

docker run -v /Users/<path>:/<container path> ... 

On Windows, mount directories using:

docker run -v /c/Users/<path>:/<container path> ... 

All other paths come from your virtual machine’s filesystem, so if you want to make some other host folder available for sharing, you need to do additional work. In the case of VirtualBox you need to make the host folder available as a shared folder in VirtualBox. Then, you can mount it using the Docker -v flag.

Con tutto ciò che viene detto, è comunque possibile utilizzare il:

docker run -v /var/run/docker.sock:/var/run/docker.sock ... 

Il primo /var/run/docker.sock fa riferimento allo stesso percorso nella macchina virtuale boot2docker.

Per esempio, quando ho eseguito la mia immagine Jenkins utilizzando il seguente comando in una macchina Windows:

$ docker run -dP -v /var/run/docker.sock:/var/run/docker.sock alidehghanig/jenkins 

posso ancora parlare con il Docker Daemon nella macchina host utilizzando le tipiche docker comandi. Per esempio, quando ho eseguito docker ps nel contenitore Jenkins, posso vedere in esecuzione contenitori nella macchina host:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS  NAMES 
65311731f446 jen... "/bi.." 10... Up 10.. 0.0.0.0:.. jenkins 
+1

Ottima spiegazione! – Andrei

19

Per Docker per Windows seguente sembra funzionare: -v //var/run/docker.sock:/var/run/docker.sock

+0

Questo funziona davvero !! Ho cercato di farlo funzionare per sempre. Molte grazie! – potz

+3

Alcune delle risposte precedenti sembrano non riferirsi all'esecuzione di contenitori Windows su Docker per Windows. Quando provo ad eseguire il comando standard per fare questo: /var/run/docker.sock 'finestra mobile run -v:/var/run/docker.sock' ottengo il seguente errore: ' finestra mobile: Risposta di errore dal daemon: specifica di bind mount non valida "//var/run/docker.sock:/var/run/docker.sock": specifica del volume non valida: \\\ \\\\\\\\\\\\\\\\\\\\ docker.sock'' L'errore ha senso perché visto che sono su Windows, cercando di eseguire un container Windows i percorsi non hanno senso. –

+1

@JoshWittner: hai trovato una soluzione per rendere disponibile Docker Socket all'interno dei container Windows con gli host Windows? – Martin

Problemi correlati