如何将mongoconfiguration为在Docker中运行以在Windows上使用外部驱动器

我正在尝试设置一个docker镜像,该镜像将运行一个mongo实例,该实例指向不在默认泊坞窗容器内的驱动器位置。

我使用下面的命令来创build问题:

docker run -p 27017:27017 --name mongo_test -v //c/Users/usrname/mongo_test:/data/db -d mongo 

该容器瞬间失败,当我运行docker container logs mongo_test命令我回来了以下转储:

 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=4f14ca0711c7 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] db version v3.4.2 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] git version: 3f76e40c105fc223b3e5aac3e20dcd026b83b38b 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1t 3 May 2016 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] allocator: tcmalloc 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] modules: none 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] build environment: 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] distmod: debian81 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] distarch: x86_64 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] target_arch: x86_64 2017-03-13T04:33:33.358+0000 I CONTROL [initandlisten] options: {} 2017-03-13T04:33:33.363+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=478M,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0), 2017-03-13T04:33:33.384+0000 E STORAGE [initandlisten] WiredTiger error (17) [1489379613:384669][1:0x7f1e6c4f5cc0], connection: /data/db/WiredTiger.wt: handle-open: open: File exists 2017-03-13T04:33:33.385+0000 I STORAGE [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.1 2017-03-13T04:33:33.386+0000 E STORAGE [initandlisten] WiredTiger error (1) [1489379613:386165][1:0x7f1e6c4f5cc0], connection: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted 2017-03-13T04:33:33.386+0000 I - [initandlisten] Assertion: 28595:1: Operation not permitted src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267 2017-03-13T04:33:33.387+0000 I STORAGE [initandlisten] exception in initAndListen: 28595 1: Operation not permitted, terminating 2017-03-13T04:33:33.387+0000 I NETWORK [initandlisten] shutdown: going to close listening sockets... 2017-03-13T04:33:33.387+0000 I NETWORK [initandlisten] removing socket file: /tmp/mongodb-27017.sock 2017-03-13T04:33:33.387+0000 I NETWORK [initandlisten] shutdown: going to flush diaglog... 2017-03-13T04:33:33.387+0000 I CONTROL [initandlisten] now exiting 2017-03-13T04:33:33.387+0000 I CONTROL [initandlisten] shutting down with code:100 

我目前正在运行预装了hyper-v而不是virutalbox的Windows 10企业版。 从我读过的virtualbox不会支持docker的外部映射驱动器,但hyper-v应该。 我还授予Hyper-Vpipe理员用户组对文件的完全控制权,以及确保docker具有映射的驱动器。

它可以正确映射驱动器,因为我可以运行一个LS命令+它创build一个日志文件夹,mongod.lock,WiredTiger,WiredTiger.lock,WiredTiger.wt和WiredTiger.wt.1文件在我之前映射的目录中的错误。

任何帮助将是伟大的。

这是行不通的。 Windows上的Docker中的MongoDB和映射卷是不兼容的,如mongo docker映像文档中所示 :

警告(Windows&OS X):Windows和OS X上的默认Docker设置使用VirtualBox虚拟机来托pipeDocker守护进程。 不幸的是,VirtualBox用于在主机系统和Docker容器之间共享文件夹的机制与MongoDB使用的内存映射文件不兼容(请参阅vbox bug , docs.mongodb.org和相关的jira.mongodb.org错误)。 这意味着无法运行一个MongoDB容器,其数据目录映射到主机。