我正在Windows上运行docker,我正在尝试将磁盘上的数据库添加到mongodb容器中。
数据库存储在C:\ Users \ data \ db。
中我运行命令:
$ docker run --name mongodb -p 27017:27017 -v //c/Users/data/db:/data/db devops-mongodb
但后来我收到了这个错误:
2015-08-17T14:28:10.385+0000 [initandlisten] exception in initAndListen: 10309 U
nable to create/open lock file: /data/db/mongod.lock errno:1 Operation not permi
tted Is a mongod instance already running?, terminating
我相信我已经在Dockerfile中正确设置了权限,如下所示:
RUN mkdir -p /data/db && chown -R `id -u` /data/db
VOLUME /data/db
答案 0 :(得分:0)
尝试添加-d
标记并查看是否有效,如下所示:
docker run -d --name mongodb -p 27017:27017 -v //c/Users/data/db:/data/db devops-mongodb
答案 1 :(得分:0)
如果你在Windows上运行Docker(2015年),那么你必须使用Docker Machine运行它。这是因为Docker还没有在Windows上本机运行;相反,它使用VirtualBox中的虚拟计算机,并在此处运行docker。
现在关键是与Docker共享的主机(Windows)文件夹是通过这个VirtualBox机器完成的,这意味着他们使用virtual file system vfs - 而不是通常理解的ntfs或xfs或任何文件系统。
这个vfs文件系统的问题在于它没有MongoDB所需的所有功能;请参阅MongoDB Platform Specific Considerations上的文档:
重要强>
MongoDB需要一个支持目录上的fsync()的文件系统。例如,HGFS和Virtual Box的共享文件夹不支持此操作。
因此,当您尝试在Windows上的docker容器中运行MongoDB时,使用卷映射到共享的Windows文件夹,它将无法工作,因为VirtualBox的中间文件系统无法支持MongoDB文件系统命令。 / p>
从Windows 10开始,有一个新选项可以在不使用Docker Machine或VirtualBox的情况下本地运行Docker on Windows。但是,文件系统再次出现问题;它使用在smb上共享的ntfs,它再次是MongoDB所需的does not support all the file operations,并导致类似的Operation Not Supported errors。