Как установить каталог из родительской системы в контейнер в докере?
Установка каталога из родительской системы в контейнер в докере
Ответ 1
* Обновление - см. ответ ниже. это уже не правильный ответ *
Вы не можете монтировать их по дизайну, потому что Docker больше не может гарантировать повторяемую среду исполнения.
Однако вы можете:
1) Импортируйте корневую файловую систему хоста и создайте из нее новое изображение:
tar -C / -c . | docker import - entend/custombase
2) Импортируйте корневую файловую систему bootstrap, например, результат запуска 'debootstrap'. (Обратите внимание, что так было создано официальное "базовое" изображение, поэтому вам может быть лучше просто запустить "базу для докер-тяги" )
debootstrap precise ./bootstrap
tar -C ./bootstrap -c . | docker import - entend/ubuntubase
3) Внесите содержимое локального каталога в контейнер при его запуске.
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
Этот последний пример обычно используется для вставки исходного кода перед запуском команды сборки внутри контейнера.
Надеюсь, это поможет!
Ответ 2
Как последнее обновление, эта функция теперь выпущена в Docker (хотя API изменился с момента запроса на загрузку, связанного с @imiric).
Просто используйте команду типа
docker run -v /tmp:/root myImage
чтобы смонтировать /tmp
с главной машины как /root
внутри изображения.
Источник: https://docs.docker.com/engine/userguide/dockervolumes/
Ответ 3
Чтобы обновить этот вопрос, это скоро будет возможно в Docker.
Этот запрос на перенос фактически реализовал эту функцию и вскоре будет объединен с мастером.
Вы можете использовать его прямо сейчас, если вы установите эту вилку.
Ответ 4
Этот IS возможен в докере:
Монтирование данных в контейнер приложения
docker run -t -i -rm -volumes-from DATA -name client1 ubuntu bash
Ответ 5
ТРЕТЬЯ ДЛЯ OSX И WINDOWS
2 последовательных монтирования: я думаю, что многие сообщения здесь могут использовать два boot2docker, причина, по которой вы ничего не видите, - это то, что вы устанавливаете каталог из boot2docker не из вашего хоста. Вам в основном нужны 2 последовательных монтирования: первый для монтирования каталога с вашего хоста в вашу систему, а второй для монтирования нового каталога из boot2docker в ваш контейнер следующим образом:
-
монтировать локальную систему на boot2docker
sudo mount -t vboxsf hostfolder /boot2dockerfolder
-
монтировать файл boot2docker в контейнере linux
docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
тогда, когда вы будете внутри контейнера, вы увидите содержимое своей папки-хозяина