Standardmäßig wird bei der Installation der Docker Toolbox die freie Virtualisierungssoftware VirtualBox installiert. Um nun im Docker-Container auf Dateien des Windows-Hosts zuzugreifen, wird standardmäßig der Pfad /c/Users
im Gastsystem gemountet. Dies ist aber nicht optimal, da man als Windows-Nutzer oft mit Leerzeichen in Pfaden geplagt ist und auch sonst eher z.B. mit einem anderen Arbeitsverzeichnis z.B. c:\dev
arbeitet.
Damit dies nun bei jedem Start der Docker-Machine verfügbar ist, müssen ein paar manuelle Handgriffe getätigt werden. Da ich unter Windows primär mit der GitBash arbeite, hier nun die einzelnen Schritte. (Vorraussetzung die Maschine default ist gestoppt)
Prüfung der aktuellen SharedFolder-Einstellungen
VBoxManage showvminfo default
Dies sollte folgende Standardausgabe weit am Ende liefern:
Shared folders: Name: 'c/Users', Host path: '\\?\c:\Users' (machine mapping), writable
Hinzufügen eines neuen SharedFolder
VBoxManage sharedfolder add default --name /c/dev --hostpath "C:\\dev" --automount
Starten der Docker-Machine mit
docker-machine start default
Per ssh mit der Docker-Machine verbinden
docker-machine ssh default
eine neue Datei für den “Autostart” erzeugen und editieren
sudo vi /mnt/sda1/var/lib/boot2docker/bootlocal.sh
Der folgende Dateiinhalt erzeugt den Mount-Pfad und hängt das SharedFolder ein
mkdir -p /c/dev mount -t vboxsf -o defaults,uid=`id -u docker`,gid=`id -g docker` c/dev /c/dev
Nach dem Verlassen der VM zurück in der GitBash verhilft ein schnelles
docker-machine restart default
zum Neustart der VM.Verbindet man sich nun erneut mit der VM mittels
docker-machine ssh default
sollte einls /c/dev
den Inhalt des Host-Verzeichnisses anzeigen.
Zusatzinfo
Da ich nicht nur mit der GitBash sondern auch mit Babun arbeite ist es auch noch interessant, wenn man die Cygwin-typischen Pfade mountet. Das bedeutet man bindet das Verzeichnis c:\dev
zusätzlich als /cygdrive/c/dev
ein und man kann dann ebenso aus der Cygwin-Shell heraus Pfade einbinden.