[英]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.