2016-08-09 122 views
5

Ich versuche zur Zeit zu verstehen, wie Docker von Volumes Griffe Montage und lief in das folgende Verhalten, das mir Art von seltsam scheint:Docker das Verhalten bei der Montage Volumen

der Annahme, dass wir das Verzeichnis/var/run montieren möchten Verzeichnis in einen Behälter (nur als Beispiel), wir die folgenden:

$ docker run -i -t -v /var/run:/test ubuntu:latest /bin/bash 

Bisher funktioniert alles einwandfrei und alle Ordner und Dateien unter/var/run zeigen sich im Inneren des Behälters innerhalb/Prüfung befinden.

Nun sehen, was passiert, wenn wir das Verzeichnis/var zu montieren entscheiden:

$ docker run -i -t -v /var:/test ubuntu:latest /bin/bash 

noch alle Host-Ordner in/var zeigen innen/Test. Nach dem Aufruf von/test/run werden die Dateien und Verzeichnisse vom Host jedoch nicht angezeigt. Mit anderen Worten, Docker scheint keine "rekursive" Bereitstellung von nachfolgenden untergeordneten Verzeichnissen und deren Inhalt zu machen. Ist das gewöhnliche Docker Verhalten?

+0

Ich kann dieses Problem nicht reproduzieren und es ist kein erwartetes Verhalten. Welche Version von docker verwenden Sie (und auf welchem ​​os)? –

+0

Ich betreibe neueste Docker 1.12 auf Debian Jessie VM in Virtualbox – pklndnst

+0

Der erste Befehl z. ermöglicht es mir, docker.sock im gestarteten Container zu sehen, während die zweite nur die Verzeichnisse des Containers unter/run dir anzeigt. – pklndnst

Antwort

5

Das ist nicht nur gewöhnliches Docker-Verhalten; das ist normal linux Verhalten. Wenn Sie bind-ein Dateisystem auf ein anderes Verzeichnis, wie in:

mkdir /tmp/mount 
mount -o bind /var /tmp/mount 

Sie werden nur Dateien im Ziel sehen montieren, im Quelldateisystem existieren. Sie werden nicht die Dateien in allen untergeordneten Halterungen enthalten sehen, es sei denn Sie waren explizit binden und diese Verzeichnisse montieren:

mount -o bind /var/run /tmp/mount/run 

Das ist genau das Verhalten, das Sie mit Docker, weil dies genau der gleiche Mechanismus ist verwendet Docker zu belichten Host-Verzeichnisse in Ihren Containern.

+0

Noch etwas, was ich über Linux gelernt habe. Vielen Dank! – pklndnst

+1

gibt es eine Möglichkeit, Docker diese Mounts explizit zu bekommen? – StuBob