Montando um diretório a partir do host no boot2docker para Windows

11

Estou executando o docker 1.6 e boot2dockerem uma caixa do Windows 8.1. Quando uso o atalho Boot2Docker Start, ele é levado a um prompt do cygwin bash, onde posso executar comandos do docker nativamente.

Estou tendo problemas para montar um diretório da minha pasta de usuários. Eu tentei:

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

Eu recebo o erro:

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

Eu obtenho os mesmos resultados quando chamo da seguinte maneira:

$ 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

Eu também tentei:

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

E eu recebi o erro:

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

Parece que o cygwin bash está sendo substituído /por \e o docker analisa o argumento passado -ve não pode aceitá-lo.

Paul Oliver
fonte
Na minha instalação do boot2docker, o comando "ls / c / Users" lista minha pasta C: \ Users do Windows 8.1. Você precisa montar outros locais?
precisa
Certamente posso ver /c/Usersna VM boot2docker linux (o host). Mas preciso do contêiner poliver / bitcoin-abe para montar uma pasta específica /c/Usersno /datadirponto de montagem no contêiner.
Paul Oliver
Também pareço ter o mesmo problema, incapaz de montar uma pasta host. $ 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
Você conseguiu uma solução para o seu problema?
Marco
Desculpe Marco, ainda não há solução. :(
Paul Oliver

Respostas:

12

Se você deseja montar a $APPDATAmáquina host do Windows /datadirno contêiner do docker, em vez do comando abaixo:

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

Você pode emitir:

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

//c/Users/PATH_TO_DIR é a chave aqui para o diretório do Windows

Seu $APPDATAdiretório DEVE residir no /c/Users/Your_User_Namediretório e não pode residir em outros lugares. (por exemplo, D:/$APPDATAna partição D.)

Xianlin
fonte
6

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

Se você estiver usando o git bash no Windows, o msysgit converterá caminhos como / c / users em c: \ users (não é algo que você deseja, porque o caminho dentro da VM do boot2docker é / c / Users)

No cmd.exe / powershell, você não deve ter esse problema.

Lee Yeh
fonte