Docker mongodb - добавить базу данных на диск в контейнер
Я запускаю Docker в Windows, и у меня есть база данных с некоторыми записями на диске в C:\data\db.
Я хочу добавить эту базу данных в мой контейнер. Я пробовал множество способов сделать это, но не получилось.
Я старался: docker run -p 27017:27017 -v //c/data/db:/data/db --name mongodb devops-mongodb
В моем dockerfile у меня есть:
RUN mkdir -p /data/db
VOLUME /data/db
Но это не добавляет мою текущую базу данных на диске в контейнер. Он создает новый каталог / data / db и сохраняет данные, которые я добавляю в него.
Документы здесь https://docs.docker.com/userguide/dockervolumes/ разделе "Монтирование каталога хоста как тома данных" специально указали мне выполнить -v //c/data/db:/data/db, но это не работает
Есть идеи?
1 ответ
Вы используете Boot2Docker (который работает внутри виртуальной машины). Boot2Docker использует гостевые дополнения VirtualBox, чтобы сделать каталоги на вашем компьютере с Windows доступными для Docker, работающего на виртуальной машине.
По умолчанию только C:\Users
каталог (в Windows) или /Users/
каталог (в OS X) используется совместно с виртуальной машиной. Все, что находится вне этих каталогов, не передается виртуальной машине, в результате чего Docker создает пустой каталог в указанном месте для тома.
Поделиться каталогами снаружи C:\Users\
с виртуальной машиной вы должны вручную настроить Boot2Docker, чтобы поделиться ими. Вы можете найти шаги, необходимые в разделе добавления гостя VirtualBox в README;
Если требуется какой-либо другой путь или общий ресурс, его можно смонтировать во время выполнения, выполнив что-то вроде:
$ mount -t vboxsf -o uid=1000,gid=50 your-other-share-name /some/mount/location
Также важно отметить, что в будущем планируется, чтобы любой общий ресурс, созданный в VirtualBox с включенным флагом "automount", был подключен во время загрузки в каталоге с именем общего ресурса (т. Е. Ресурс с именем home/jsmith будет автоматически смонтирован в /home/jsmith).
Помните, что использование гостевых дополнений VirtualBox очень плохо влияет на производительность (чтение / запись на том будет очень медленной). Что может быть хорошо для развития, но следует использовать с осторожностью.