Подтвердить что ты не робот

Установка каталога из родительской системы в контейнер в докере

Как установить каталог из родительской системы в контейнер в докере?

4b9b3361

Ответ 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
    

тогда, когда вы будете внутри контейнера, вы увидите содержимое своей папки-хозяина