我正在Windows上运行Docker,我有一个数据库,在C:\ data \ db上的磁盘上有一些条目。
我想将此数据库添加到我的容器中。我已经尝试了很多方法来做到这一点,但失败了。
我试过了:docker run -p 27017:27017 -v //c/data/db:/data/db --name mongodb devops-mongodb
在我的dockerfile中,我有:
RUN mkdir -p /data/db
VOLUME /data/db
但是这不会将我当前的数据库添加到磁盘上。它创建一个新的/ data / db目录并保存我添加到它的数据。
这里的文档https://docs.docker.com/userguide/dockervolumes/在'将主机目录挂载为数据卷'下专门告诉我执行-v // c / data / db:/ data / db但这不起作用。< / p>
有什么想法吗?
答案 0 :(得分:2)
您正在使用Boot2Docker(在虚拟机内运行)。 Boot2Docker使用VirtualBox guest添加项使Windows机器上的目录可供在虚拟机内运行的Docker使用。
默认情况下,只与虚拟机共享C:\Users
目录(在Windows上)或/Users/
目录(在OS X上)。这些目录之外的任何内容都与虚拟机不共享,这导致Docker在卷的指定位置创建一个空目录。
要与虚拟机共享C:\Users\
之外的目录,您必须手动配置Boot2Docker以共享这些目录。您可以在自述文件的VirtualBox guest addition部分找到所需的步骤;
如果需要其他路径或共享,可以通过执行以下操作在运行时安装它:
$ mount -t vboxsf -o uid=1000,gid=50 your-other-share-name /some/mount/location
同样重要的是要注意,将来,计划是在VirtualBox中创建的任何共享,其中打开了“automount”标志,在引导期间安装在共享名称的目录(即共享)命名为home / jsmith将在/ home / jsmith自动安装。
请注意,使用VirtualBox guest虚拟机添加会对性能产生非常糟糕的影响(读取/写入卷会非常慢)。这可能适合开发,但应谨慎使用。