Каталог монтирования из родительской системы в контейнер в докере
Как подключить каталог из родительской системы к контейнеру в Docker?
5 ответов:
*обновление-см. ответ ниже. это уже не правильный ответ *
вы не можете монтировать их по дизайну, потому что Docker больше не может гарантировать повторяемую среду выполнения.
вы можете:
импортируйте корневую файловую систему хоста и создайте из нее новый образ:
tar -C / -c . | docker import - entend/custombase
импортировать загрузки корневой файловой системы, например в результате выполнения 'ядро'. (Заметить что вот как был создан официальный "базовый" образ, поэтому вам может быть лучше просто запустить "docker pull base")
debootstrap precise ./bootstrap tar -C ./bootstrap -c . | docker import - entend/ubuntubase
введите содержимое локального каталога в контейнер при его запуске.
IMAGE=base; SRC=./stuff; DST=/tmp/stuff; CMD="echo hello world"; tar -C $src -c . | docker run $IMAGE -i /bin/sh -c "tar -C $DST -x; $CMD"
это запустит контейнер из $IMAGE, скопируйте каталог хоста $SRC в каталог контейнера $DST, а затем запустите команду $CMD.
этот последний пример обычно используется для вставки исходного кода перед запуском команды сборки внутри контейнер.
просто в качестве заключительного обновления, эта функция в настоящее время выпущен в Докер (хотя этот API изменилось с просьбой вытащить связывают @imiric).
просто используйте команду
docker run -v /tmp:/root myImage
для того чтобы
/tmp
с главной машины как/root
внутри изображения.Источник:https://docs.docker.com/engine/userguide/dockervolumes/
просто чтобы обновить этот вопрос, это скоро будет возможно в Docker.
это тянуть запрос фактически реализовал эту функцию и вскоре будет объединен с мастером.
вы можете использовать его прямо сейчас, если вы установите эта вилка.
этой и возможно в Docker:
монтировать данные в контейнер приложения:
docker run -t -i -rm -volumes-from DATA -name client1 ubuntu bash
трюк для OS X и Windows
два последовательных монтирования: я думаю, что многие сообщения здесь могут использовать два boot2docker. причина, по которой вы ничего не видите, заключается в том, что вы монтируете каталог из boot2docker, а не с вашего хоста. Вам в основном нужны два последовательных монтирования: первое для подключения каталога с вашего хоста к вашей системе, а второе для подключения нового каталога из boot2docker к вашему контейнеру следующим образом:
установите локальную систему дальше boot2docker:
sudo mount -t vboxsf hostfolder /boot2dockerfolder
смонтировать файл boot2docker в контейнере Linux
docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
тогда, когда вы делаете
ls
внутри containerfolder вы увидите содержимое вашего hostfolder