docker-compose с MongoDb и томами - похоже, не смонтирован

Я пытаюсь запустить операцию docker-compose, которая порождает экземпляры Redis и MongoDb и которая (должна) предоставлять экземпляру MongoDb data-file с хост-компьютера через спецификацию volumes.

Я могу успешно загрузить контейнер, используя следующие docker-compose.yml:

redis:
  image: redis
  ports:
   - "6379:6379"
mongo:  
  image: mongo:latest
  volumes:
    - ./data/db:/data/db
  ports:
    - "27017:27017"
  command: --rest

предполагая, что он должен «монтировать» каталог data/db, в котором каталог data находится рядом с файлом docker-compose.exe.

введите здесь описание изображения

Я могу подключиться как к Redis, так и к MongoDb, но простой запрос к коллекции, выполняющий count(), возвращает 0 (который должен содержать данные). Это наводит меня на мысль, что монтирование свойства volumes не работает.

Если я проверю файловую структуру в контейнере, я не увижу папку /data... Я что-то здесь упустил... Спасибо за наводку!

введите здесь описание изображения


person Ropstah    schedule 24.01.2016    source источник


Ответы (1)


Вы показываете файловую систему boot2docker, TinyCore, на котором работает демон Docker.
Это не так:

И это будет работать только в том случае, если ваши файлы находятся в C:\users\... или /Users/..., что является единственной папкой хоста, смонтированной VirtualBox в виртуальной машине Linux.

Чтобы проверить, произошло ли монтирование, выполните docker exec mongo bash, откройте bash в этом контейнере и проверьте ls /data.

person VonC    schedule 24.01.2016
comment
хорошо, круто, я смог увидеть через Kitematic, что том монтируется, однако он не указывал на локальный каталог, который я указал. Тот факт, что он должен находиться в каталоге c:\users, решил эту проблему. Я переместил все туда, и теперь он монтирует правильный том. Жаль, что данные не могут быть загружены, что означает, что контейнер не может быть запущен... (Текстовый файл занят: /data/db/journal/j._0) - person Ropstah; 24.01.2016
comment
Спасибо, что прояснили. Я думаю, что вижу ошибку, и она связана с разрешениями на папку /data/db. Каким-то образом контейнер не может писать в эти файлы... Я отмечу ваш ответ как ответ, но, надеюсь, вы сможете указать мне, где должны быть установлены эти разрешения... - person Ropstah; 24.01.2016
comment
Спасибо за ваши предложения по ссылкам. Однако я не совсем уверен, что мне нужно сделать, чтобы исправить это. Я не могу запустить свой контейнер из-за разрешений. Единственное, что я могу себе представить, это выполнение какой-либо операции chown на хосте (это Docker, верно? Не мой локальный компьютер, на котором запущена виртуальная машина Docker?), где находится папка /data/db для пользователя/группы mongodb:mongodb или что-то в этом роде? - person Ropstah; 24.01.2016
comment
Эти ссылки предназначены для установки правильного разрешения через файл Dockerfile перед выполнением. - person VonC; 24.01.2016
comment
Давайте продолжим обсуждение в чате. - person Ropstah; 24.01.2016