簡體   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