Mounten eines Verzeichnisses vom Host in boot2docker für Windows

11

Ich verwende Docker 1.6 und boot2dockereine Windows 8.1-Box. Wenn ich die Boot2Docker-Startverknüpfung verwende, komme ich zu einer Cygwin-Bash-Eingabeaufforderung, in der ich Docker-Befehle nativ ausführen kann.

Ich habe Probleme beim Mounten eines Verzeichnisses aus meinem Benutzerordner. Ich habe es versucht:

$ docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe

Ich bekomme den Fehler:

invalid value "C:\\Users\\someone\\AppData\\Roaming/Bitcoin:/datadir"
for flag -v: \Users\someone\AppData\Roaming/Bitcoin:/datadir 
is not an absolute path 
See 'c:\Program Files\Boot2DockeForWindows\docker.exe run --help'.

Ich erhalte die gleichen Ergebnisse, wenn ich es so nenne:

$ docker run -d --name abe -v "$APPDATA/Bitcoin":/datadir poliver/bitcoin-abe
$ docker run -d --name abe -v "/c/users/someone/AppData/Roaming/Bitcoin":/datadir poliver/bitcoin-abe
$ docker run -d --name abe -v ~/AppData/Roaming/Bitcoin:/datadir poliver/bitcoin-abe

Ich habe auch versucht:

$ docker run -d --name abe -v ~/APPDATA/Bitcoin:/datadir poliver/bitcoin-abe

Und ich habe den Fehler bekommen:

FATA[0000] Error response from daemon: cannot bind mount volume: ~\AppData\Bitcoin volume paths must be absolute.

Es scheint , wie Cygwin bash ersetzt /mit \und dann analysiert Docker das Argument übergeben -vund sie nicht annehmen können.

Paul Oliver
quelle
Bei meiner boot2docker-Installation listet der Befehl "ls / c / Users" meinen Windows 8.1 C: \ Users-Ordner auf. Müssen Sie andere Standorte montieren?
Wilson Gibbins
Ich kann sicherlich /c/Usersvon der boot2docker Linux VM (dem Host) sehen. Aber ich brauche den poliver / bitcoin-abe-Container, um einen bestimmten Ordner /c/Usersam /datadirMount-Punkt des Containers zu mounten.
Paul Oliver
Ich habe anscheinend auch das gleiche Problem, dass ein Hostordner nicht bereitgestellt werden kann. $ docker run -d -v /c/Users/310145787/Desktop/mongo:/data/db mongo invalid value "c:\\Users\\310145787\\Desktop\\mongo;C:\\Program Files (x86)\\Git\\data\\db" for flag -v: \Users\310145787\Desktop\mongo;C:\Program Files (x86)\Git\data\db is not an absolute path
Marco
Haben Sie eine Lösung für Ihr Problem gefunden?
Marco
Sorry Marco, noch keine Lösung. :(
Paul Oliver

Antworten:

12

Wenn Sie das $APPDATAauf Ihrem Windows- /datadirHostcomputer anstelle des folgenden Befehls auf dem Docker-Container bereitstellen möchten :

docker run -d --name abe -v $APPDATA/Bitcoin:/datadir poliver/bitcoin-abe

Sie können Folgendes ausgeben:

docker run -d --name abe -v //c/Users/YOUR_USER_NAME/$APPDATA/Bitcoin:/datadir poliver/bitcoin-abe

//c/Users/PATH_TO_DIR ist hier der Schlüssel für das Windows-Verzeichnis

Ihr $APPDATAVerzeichnis MUSS sich im /c/Users/Your_User_NameVerzeichnis befinden und darf sich nicht an anderen Orten befinden. (zB D:/$APPDATAauf der D-Partition.)

Xianlin
quelle
6

Siehe: https://github.com/docker/docker/issues/12590

Wenn Sie git bash unter Windows verwenden, konvertiert msysgit Pfade wie / c / users in c: \ users (nicht gewünscht, da der Pfad in der boot2docker-VM / c / Users lautet).

Auf cmd.exe / Powershell sollte dieses Problem nicht auftreten.

Lee Yeh
quelle