Docker mongodb - 将磁盘上的数据库添加到容器

Docker mongodb - add database on disk to container

我是 运行 Docker,在 windows 上,我有一个数据库,磁盘上的一些条目位于 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 目录并保存我添加到其中的数据。

'Mount a host directory as a data volume' 下 https://docs.docker.com/userguide/dockervolumes/ 的文档特别告诉我执行 -v //c/data/db:/data/db 但这不起作用。

有什么想法吗?

您正在使用 Boot2Docker(在虚拟机中运行)。 Boot2Docker 使用 VirtualBox 来宾添加使 Windows 机器上的目录可供虚拟机内的 Docker 运行 使用。

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

要与虚拟机共享 C:\Users\ 之外的目录,您必须手动配置 Boot2Docker 以共享这些目录。您可以在自述文件的 VirtualBox guest addition 部分找到所需的步骤;

If some other path or share is desired, it can be mounted at run time by doing something like:

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

It is also important to note that in the future, the plan is to have any share which is created in VirtualBox with the "automount" flag turned on be mounted during boot at the directory of the share name (ie, a share named home/jsmith would be automounted at /home/jsmith).

请注意,使用 VirtualBox 来宾添加会对性能产生非常糟糕的影响(reading/writing 到卷将非常慢)。这可能适合开发,但应谨慎使用。