Monter un répertoire à partir de l'hôte dans boot2docker pour Windows

11

Je cours docker 1.6 et boot2docker sur une boîte Windows 8.1. Lorsque j'utilise le raccourci Boot2Docker Start, cela me conduit à une invite cygwin bash dans laquelle je peux exécuter des commandes docker de manière native.

Je ne parviens pas à monter un répertoire à partir de mon dossier d'utilisateurs. J'ai essayé:

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

Je reçois l'erreur:

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'.

J'obtiens les mêmes résultats quand je l'appelle de cette façon:

$ 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

J'ai aussi essayé:

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

Et j'ai eu l'erreur:

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

Il semble que cygwin bash remplace / avec \ puis docker analyse l'argument passé à -v et ne peut pas l'accepter.

Paul Oliver
la source
Sur mon installation boot2docker, la commande "ls / c / Users" répertorie mon dossier Windows 8.1 C: \ Users. Avez-vous besoin de monter d'autres endroits?
Wilson Gibbins
Je peux certainement voir /c/Users à partir de la machine virtuelle linux boot2docker (l'hôte). Mais j'ai besoin du conteneur poliver / bitcoin-abe pour monter un dossier spécifique à partir de /c/Users au /datadir point de montage sur le conteneur.
Paul Oliver
Je semble également rencontrer le même problème, incapable de monter un dossier hôte. $ 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
Avez-vous trouvé une solution à votre problème?
Marco
Désolé Marco, pas encore de solution. :(
Paul Oliver

Réponses:

12

Si vous voulez monter le $APPDATA sur votre ordinateur hôte Windows pour /datadir sur le conteneur Docker, au lieu de la commande ci-dessous:

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

Vous pouvez émettre:

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

//c/Users/PATH_TO_DIR est la clé ici pour le répertoire Windows

Votre $APPDATA Annuaire DOIT résider sur le /c/Users/Your_User_Name répertoire et ne peux pas résider sur d'autres lieux. (par exemple. D:/$APPDATA sur la partition D.)

Xianlin
la source
6

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

Si vous utilisez git bash sous Windows, msysgit convertit les chemins tels que / c / users en c: \ users (pas ce que vous voulez, car le chemin à l'intérieur de la machine virtuelle boot2docker est / c / Users).

Sur cmd.exe / powershell, vous ne devriez pas avoir ce problème.

Lee Yeh
la source