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

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

私はboot2dockerWindows 8.1 ボックスで docker 1.6 を実行しています。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て受け入れることができなくなるようです。

答え1

$APPDATAWindows ホスト マシン上のを/datadirDocker コンテナーにマウントする場合は、以下のコマンドの代わりに次の操作を実行します。

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_DIR Windowsディレクトリのキーはここです

あなたの$APPDATAディレクトリしなければならないディレクトリ上に存在し/c/Users/Your_User_Nameできない他の場所に存在します。(例: D:/$APPDATAD パーティション)

答え2

見る:参考: https://github.com/docker/docker/issues/12590

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

cmd.exe/powershell ではこの問題は発生しないはずです。

関連情報