Docker MongoDB – 在磁盘上添加数据库到容器

我在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 

但是这不会将我当前的数据库添加到容器中。 它创build一个新的/ data / db目录,并保存我添加的数据。

这里的文档https://docs.docker.com/userguide/dockervolumes/下的“挂载主机目录作为数据卷”明确告诉我执行-v // c / data / db:/ data / db,但是这个不工作。

有任何想法吗?

您正在使用Boot2Docker(在虚拟机中运行)。 Boot2Docker使用VirtualBox来增加虚拟机中运行的Windows机器上的目录。

默认情况下,只有C:\Users目录(在Windows上)或/Users/目录(在OS X上)与虚拟机共享。 这些目录之外的任何内容都不会与虚拟机共享 ,这会导致Docker在卷的指定位置创build一个空目录。

要使用虚拟机共享C:\Users\以外的目录,您必须手动configurationBoot2Docker以共享这些目录。 您可以在README的VirtualBox guest添加部分find所需的步骤;

如果需要其他path或共享,可以在运行时通过执行如下操作来挂载:

 $ mount -t vboxsf -o uid=1000,gid=50 your-other-share-name /some/mount/location 

另外需要注意的是,将来计划在VirtualBox中创build的“automount”标志被打开的任何共享都将在引导期间被挂载到共享名称的目录(即共享名为home / jsmith将自动挂载在/ home / jsmith)。

请注意,使用VirtualBox guest添加对性能有非常不好的影响(对卷的读取/写入将非常慢)。 这可能会对开发很好,但应谨慎使用。