我正在尝试使用 docker 设置我的项目。我在 Windows 10 家庭版上使用 Docker Toolbox。我对 docker 很陌生。据我了解,我必须将文件复制到新容器并添加一个卷,以便我可以保留 gulp 所做的更改。
这是我的文件夹结构
-- src
|- dist
|- node-modules
|- gulpfile.js
|- package.json
|- Dockerfile
Dockerfile 代码
FROM node:8.9.4-alpine
RUN npm install -g gulp
CMD [ "ls", 'source' ]
我尝试了许多*docker run -v *的解决方案
例如
docker run -v /$(pwd):/source <container image>
docker run -v //c/Users/PcUser/Desktop/proj:/source <container image>
docker run -v //c/Users/PcUser/Desktop/proj:/source <container image>
docker run -v //d/proj:/source <container image>
docker run -v /d/proj:/source <container image>
*但运气不好*
任何人都可以描述一下您将如何使用相同的结构为自己设置它。为什么我无法挂载我的主机文件夹。
P.S:如果我使用两个容器,一个用于使用 gulp 编译代码,另一个使用 nginx 来提供 dist 文件夹的内容。我将如何做到这一点。
最佳答案
@sxm1972 感谢您的努力和帮助。
您可能使用的是 Windows Pro 或服务器版本。我使用的是Windows 10 家庭版
这是我解决问题的方法,以便其他使用相同设置的人可以解决他们的问题。
There may be a better way to solve this, please comment if there is an efficient way.
所以...
首先,问题...为什么我在容器中看不到 PC 上的共享卷。
Ans:如果我们将 docker 的 Boot2Docker 与 VirtualBox(我就是)一起使用,那么每当安装卷时,它都会引用 Boot2Docker VM 内的文件夹
Image: Result of -v with docker in VirtualBox Boot2Docker
因此,如果我们尝试使用 $ ls
它将显示一个空文件夹,在我的例子中它就是这样。
因此,如果我们想将文件从 Windows 环境共享到容器,我们必须实际将文件夹挂载到 Boot2Docker VM。
Image: Resulting Mounts Window <-> Boot2Docker <-> Container
要实现此目的,我们必须使用以下命令将文件夹手动安装到虚拟机 command
vboxmanage sharedfolder add default --name "<folder_name_on_vm>" --hostpath "<path_to_folder_on_windows>" --automount
如果运行命令时出现错误,提示未找到 vboxmanager,请将虚拟框文件夹路径添加到系统路径中。对我来说是C:\Program Files\Oracle\VirtualBox
运行命令后,您将看到 <folder_name_on_vm>
上root
。您可以通过docker-machine ssh default
查看然后ls /
。确认文件夹<folder_name_on_vm>
后存在,您可以将其用作容器的卷。
docker run -it -v /<folder_name_on_vm>:/source <container> sh
希望这有帮助......!
P.S 如果你觉得懒,不想挂载文件夹,你可以将你的项目放在 C:/Users
中文件夹,因为它默认安装在虚拟机上,如 image 中所示。
关于docker - 无法在 Windows 10 上使用 Docker Toolbox 共享/挂载卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48828406/