我正在尝试设置一个 docker 映像,该映像将运行一个 mongo 实例,该实例指向不在默认 docker 容器内的驱动器位置。
我使用以下命令来创建问题:
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
我目前运行的是 Windows 10 企业版,它预装了 hyper-v 而不是 virutalbox。据我所知,virtualbox 不支持 docker 的外部映射驱动器,但 hyper-v 应该支持。我还授予 Hyper-V 管理员用户组对该文件的完全控制权,并确保 docker 已映射驱动器。
它可以正确映射驱动器,因为我可以运行 LS 命令 + 它会在出错之前在我映射的目录中创建一个日志文件夹、mongod.lock、WiredTiger、WiredTiger.lock、WiredTiger.wt 和 WiredTiger.wt.1 文件。
任何帮助都会很棒。