繁体   English   中英

Docker-无法在容器中挂载启动mongodb-不允许操作

[英]Docker - unable to mount start mongodb in container - operation not permitted

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

尝试添加-d标志,看看是否可行,如下所示:

docker run -d --name mongodb -p 27017:27017 -v //c/Users/data/db:/data/db devops-mongodb

主要回答:Docker Machine

如果要在Windows上运行Docker(在2015年),则必须使用Docker Machine运行它。 这是因为Docker尚未在Windows上本地运行。 取而代之的是,它在VirtualBox中使用一台虚拟机,而docker在其上运行。

现在至关重要的是,与Docker共享的主机(Windows)文件夹是通过此VirtualBox计算机完成的,这意味着它们使用虚拟文件系统vfs-而不是ntfs或xfs或通常理解的任何文件系统。

这个vfs文件系统的问题在于它没有MongoDB所需的所有功能; 请参阅有关MongoDB平台特定注意事项的文档:

重要
MongoDB需要一个在目录上支持fsync()的文件系统。 例如,HGFS和Virtual Box的共享文件夹不支持此操作。

因此,当您尝试在Windows的docker容器中使用映射到共享Windows文件夹的卷运行MongoDB时,它将无法正常工作,因为VirtualBox的中间文件系统无法支持MongoDB文件系统命令。

附录:Windows 10上的本机Docker

从Windows 10开始,有一个新选项可以在Windows上本地运行Docker,而无需使用Docker Machine或VirtualBox。 但是,文件系统仍然存在问题。 它使用通过smb共享的ntfs,这再次不支持 MongoDB所需的所有文件操作 ,并导致类似的Operation Not Supported错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM