web-dev-qa-db-ja.com

Windowsのboot2dockerでホストからディレクトリをマウントする

Windows 8.1ボックスでdocker 1.6とboot2dockerを実行しています。 Boot2Docker Startショートカットを使用すると、cygwin bashプロンプトが表示され、Dockerコマンドをネイティブで実行できます。

ユーザーフォルダからディレクトリをマウントできません。私はもう試した:

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

エラーが発生します:

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

これらの方法で呼び出すと、同じ結果が得られます。

$ 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

私も試しました:

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

そして私はエラーを得ました:

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

Cygwin bashが/\に置き換えているようで、Dockerは-vに渡された引数を解析し、それを受け入れることができないようです。

11
Paul Oliver

以下のコマンドの代わりに、Windowsホストマシンの$APPDATAをDockerコンテナの/datadirにマウントする場合:

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

以下を発行できます。

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

//c/Users/PATH_TO_DIRWindowsディレクトリのキーです

あなたの$APPDATAディレクトリ[〜#〜] must [〜#〜]/c/Users/Your_User_Nameディレクトリにあり、それはcannot他の場所にあります。 (例:DパーティションのD:/$APPDATA)。

12
Xianlin

参照してください: https://github.com/docker/docker/issues/1259

Windowsでgit bashを使用している場合、msysgitは/ c/usersなどのパスをc:\ usersに変換します(boot2docker内のパスVMは/ c/Usersであるため、望みのものではありません)

Cmd.exe/powershellでは、この問題は発生しません。

6
Lee Yeh