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添加对性能有非常不好的影响(对卷的读取/写入将非常慢)。 这可能会对开发很好,但应谨慎使用。