2016-11-27 12 views
4

Я пытаюсь использовать official Mongo dockerfile для загрузки базы данных, я использую команду -v для сопоставления локального каталога/данных внутри контейнера.Не могу вызвать chown внутри контейнера Docker (Docker for Windows)

В рамках dockerfile, он пытается Чаун этот каталог для пользователя MongoDB:

RUN mkdir -p /data/db /data/configdb \ 
    && chown -R mongodb:mongodb /data/db /data/configdb 
VOLUME /data/db /data/configdb 

Однако это не удается с помощью следующей команды:

chown: changing ownership of '/data/db': Permission denied 

Что я делаю неправильно здесь ? Я не могу найти никакой документации вокруг этого - конечно, контейнер должен иметь полные права доступа к отображенной директории, так как он был явно принят в команде докера выполнения:

docker run -d --name mongocontainer -v R:\mongodata:/data/db -p 3000:27017 mongo:latest 
+2

команды, которые появляются в инструкции RUN Dockerfile, не запускаются в то время, когда происходит «запуск докера». Инструкция Dockerfile RUN выполняется во время создания образа, когда запускаются команды «docker build». – programmerq

ответ

1

Вы имеете подобные проблемы, иллюстрирующие то же сообщение об ошибке в mongo issues 68 или issue 74

хост каталог тома машина не может быть под /Users (или ~). Попробуйте:

docker run --name mongo -p 27017:27017 -v /var/lib/boot2docker/my-mongodb-data/:/data/db -d mongo --storageEngine wiredTiger 

PR 470 добавляет:

ПРЕДУПРЕЖДЕНИЕ: потому, что MongoDB использует память отображенные файлы не представляется возможным использовать его через vboxsf к вашему хосту (vbox bug).

VirtualBox общие папки не поддерживаются MongoDB (см docs.mongodb.org и связанной с ним jira.mongodb.org ошибка).

Это означает, что при установке по умолчанию Docker Toolbox по умолчанию невозможно запустить контейнер MongoDB с каталогом данных, отображаемым на хост.

+0

Понял - спасибо за ваш исчерпывающий ответ. – James

Смежные вопросы