boot2docker
我正在 Windows 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
如果您想將$APPDATA
Windows 主機上的 docker 容器掛載到/datadir
docker 容器上,而不是使用下列命令:
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:/$APPDATA
在 D 分割區上。)
答案2
看:https://github.com/docker/docker/issues/12590
如果您在 Windows 上使用 git bash,msysgit 會將 /c/users 等路徑轉換為 c:\users (這不是您想要的,因為 boot2docker VM 內的路徑是 /c/Users)
在 cmd.exe/powershell 上,您不應該遇到此問題。