Docker Community Forums

Share and learn in the Docker community.

Issues with mongo with mounted volume for data

Expected behavior

I’m trying to start up Graylog2 in docker as per the Graylog2 docs here: http://docs.graylog.org/en/2.0/pages/installation/docker.html

I’ve set up Docker to share the drive where my docker-compose file is located.

My docker-compose:

some-mongo:
image: "mongo:latest"
volumes:
- ./graylog/data/mongo:/data/db
some-elasticsearch:
image: "elasticsearch:latest"
command: "elasticsearch -Des.cluster.name=‘graylog’"
volumes:
- ./graylog/data/elasticsearch:/usr/share/elasticsearch/data
graylog:
image: graylog2/server:latest
volumes:
- ./graylog/data/journal:/usr/share/graylog/data/journal
- ./graylog/config:/usr/share/graylog/data/config
environment:
GRAYLOG_PASSWORD_SECRET: somepasswordpepper
GRAYLOG_ROOT_PASSWORD_SHA2: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
GRAYLOG_REST_TRANSPORT_URI: http://127.0.0.1:12900
links:
- some-mongo:mongo
- some-elasticsearch:elasticsearch
ports:
- “9000:9000”
- “12900:12900”

Actual behavior

PS C:.ws.local\GraylogPoC> docker-compose up
Creating graylogpoc_some-elasticsearch_1
Creating graylogpoc_some-mongo_1
Creating graylogpoc_graylog_1

ERROR: for graylog Cannot link to a non running container: /graylogpoc_some-mongo_1 AS /graylogpoc_graylog_1/graylogpoc
_some-mongo_1
Traceback (most recent call last):
File “”, line 3, in
File “compose\cli\main.py”, line 63, in main
AttributeError: ‘ProjectError’ object has no attribute 'msg’
docker-compose returned -1
PS C:.ws.local\GraylogPoC>

When I try to run just the graylogpoc_some-mongo_1 container, I get the following logs:

2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=b0b60d68d356
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] db version v3.2.6
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] git version: 05552b562c7a0b3143a729aaa0838e558dc49b25
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] allocator: tcmalloc
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] modules: none
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] build environment:
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] distmod: debian71
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] distarch: x86_64
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] target_arch: x86_64
2016-06-09T17:21:55.356+0000 I CONTROL [initandlisten] options: {}
2016-06-09T17:21:55.362+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1G,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),
2016-06-09T17:21:55.371+0000 E STORAGE [initandlisten] WiredTiger (17) [1465492915:371615][1:0x7fd2b835dc80], connection: /data/db/WiredTiger.wt: handle-open: open: File exists
2016-06-09T17:21:55.373+0000 I STORAGE [initandlisten] WiredTiger unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.1
2016-06-09T17:21:55.374+0000 E STORAGE [initandlisten] WiredTiger (1) [1465492915:374220][1:0x7fd2b835dc80], connection: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
2016-06-09T17:21:55.375+0000 I - [initandlisten] Assertion: 28595:1: Operation not permitted
2016-06-09T17:21:55.375+0000 I STORAGE [initandlisten] exception in initAndListen: 28595 1: Operation not permitted, terminating
2016-06-09T17:21:55.375+0000 I CONTROL [initandlisten] dbexit: rc: 100

Information

This is related to a diagnostic I uploaded with id: 761b2a03-ca50-46a8-8a63-f72f678363b7

I think this is similar to an error discussed in this GitHub issue: https://github.com/Parallels/docker-machine-parallels/issues/28

That issue explains that Mongo’s need to use memory mapped IO for its data files wasn’t supported by the Parallels shared folder.

I’m guessing a similar issue could be at play for files shared by Hyper-V with the Docker Host VM.

If this is the case, is there a plan to support memory mapped access to docker volumes? I’m guessing that most DBMS–not just Mongo–have similar file access needs.

Steps to reproduce the behavior

  1. Share C: drive in Docker’s Shared Drives setting
  2. Set up docker-compose.yml
  3. docker-compose up

I’m getting the same issue. There’s a lot of discussion of filesystems in this topic: Symlinks on shared volumes not supported . By the sound of it, the ntfs-ver-smb file system doesn’t act very unix-like (e.g. doesn’t do symlinks), so the docker team are working on better filesystem integration. We may have to wait a while longer for mongodb on docker on windows :(-

Docker for Windows uses a Samba share, it seems like it should work: http://stackoverflow.com/questions/15610385/meteor-unexpected-mongo-exit-code-100

I suspect that there might be MongoDB configuration to avoid this issue. Maybe not using WT storage engine, for instance. I haven’t gotten a chance to work on it yet; way cheaper to abandon Windows and run the MongoDB containers on a linux node.