Docker 在容器上挂载空目录
Docker mounts empty directories on containers
我 运行 Docker Windows 10 Home 上的工具箱,没有 Hyper-v,它正在使用 Virtualbox。
Docker 像 shell (boot2docker) 一样从 Mingew 启动,并且可以查看和使用 Windows 目录。
我要挂载的目录是D:\project\src
我试过了:
$ cd /d/project
$ docker run -it -v "$PWD":/proj -w /proj golang
root@68ce305398a1:/proj# ls -a
. ..
有趣的是,如果我这样做:
$ docker run -it -v "$PWD"/src:/proj -w /proj golang
root@68ce305398a1:/proj# ls -a
. ..
然后
$ docker run -it -v "$PWD":/proj -w /proj golang
root@68ce305398a1:/proj# ls -a
src . ..
现在出现src是因为我之前mount过它,但是没有src下或src以外的其他目录!
尽管我在 D:\proj\ 和 D:\proj\src 中都有文件,从中可以看到 shell (boot2docker)
我还将该目录添加到 virtualbox 共享文件夹(尽管无法挂载它们)。
我做错了什么?有没有办法让它在这种环境下工作?
找到解决方案:
目录在 Virtualbox 中共享不正确。
在 boot2docker shell 中,我发现我有 /d/proj 挂载在容器中是空的。
但是还有 /proj 是我在 virtual box 中的错误共享。
只需在 virtualbox 共享中添加 /d/proj 作为挂载点即可解决问题。
我 运行 Docker Windows 10 Home 上的工具箱,没有 Hyper-v,它正在使用 Virtualbox。
Docker 像 shell (boot2docker) 一样从 Mingew 启动,并且可以查看和使用 Windows 目录。
我要挂载的目录是D:\project\src
我试过了:
$ cd /d/project
$ docker run -it -v "$PWD":/proj -w /proj golang
root@68ce305398a1:/proj# ls -a
. ..
有趣的是,如果我这样做:
$ docker run -it -v "$PWD"/src:/proj -w /proj golang
root@68ce305398a1:/proj# ls -a
. ..
然后
$ docker run -it -v "$PWD":/proj -w /proj golang
root@68ce305398a1:/proj# ls -a
src . ..
现在出现src是因为我之前mount过它,但是没有src下或src以外的其他目录!
尽管我在 D:\proj\ 和 D:\proj\src 中都有文件,从中可以看到 shell (boot2docker)
我还将该目录添加到 virtualbox 共享文件夹(尽管无法挂载它们)。
我做错了什么?有没有办法让它在这种环境下工作?
找到解决方案:
目录在 Virtualbox 中共享不正确。
在 boot2docker shell 中,我发现我有 /d/proj 挂载在容器中是空的。
但是还有 /proj 是我在 virtual box 中的错误共享。
只需在 virtualbox 共享中添加 /d/proj 作为挂载点即可解决问题。