[英]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
如果要在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开始,有一个新选项可以在Windows上本地运行Docker,而无需使用Docker Machine或VirtualBox。 但是,文件系统仍然存在问题。 它使用通过smb共享的ntfs,这再次不支持 MongoDB所需的所有文件操作 ,并导致类似的Operation Not Supported错误 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.