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

Boot2docker startup script для монтирования локальной общей папки с хостом

Я запускаю boot2docker 1.3 на Win7.

Я хочу подключить общую папку.

В VirtualBox Manager под свойствами изображения → общие папки я добавил папку, которую я хочу, и назвал ее "c/shared". Проверяются флажки "автоустановить" и "сделать перманентные".

Когда boot2docker загружается, он еще не установлен. Я должен сделать дополнительно:

sudo mount -t vboxsf c/shared /c/shared

чтобы он отображался. Поскольку мне нужно, чтобы каждый раз, когда я когда-либо пользовался докером, я бы хотел, чтобы он просто запускался при загрузке или уже был там. Поэтому я подумал, что если бы был запуск script, я мог бы добавить, но я не могу найти, где бы это было.

Спасибо

EDIT: он кричит на меня, что это дубликат Boot2Docker на Mac - доступ к локальным файлам, что является другим вопросом. Я хотел установить папку, которая не была одним из значений по умолчанию, например /User на OSX или /c/Users в окнах. И я специально запрашиваю сценарии запуска.

4b9b3361

Ответ 1

/var/lib/boot2docker/bootlocal.sh, вероятно, подходит для вашей потребности, он будет запускаться с помощью начального script /opt/bootscripts.sh

И bootscripts.sh также поместит вывод в /var/log/bootlocal.log, см. ниже раздел (версия boot2docker 1.3.1)

# Allow local HD customisation
if [ -e /var/lib/boot2docker/bootlocal.sh ]; then
   /var/lib/boot2docker/bootlocal.sh > /var/log/bootlocal.log 2>&1 &
fi 

Один вариант использования для меня -

Обычно я помещаю каталог shared как /c/Users/larry/shared, затем добавляю script

#/bin/bash
ln -s  /c/Users/larry/shared /home/docker/shared

Поэтому каждый раз я могу получить доступ к ~/shared в boot2docker так же, как и в хосте

см. FAQ.md (предоставлено @KCD)

Ответ 2

Если вы используете boot2docker (Windows), вы должны сделать следующее:

Сначала создайте общую папку для boot2docker VM:

"C:/Program Files/Oracle/VirtualBox/VBoxManage" sharedfolder add default -name some_shared_folder -hostpath /c/some/path/on/your/windows/box

#Then make this folder automount 
docker-machine ssh
vi /var/lib/boot2docker/profile

Добавьте в конце файла профиля следующее:

sudo mkdir /windows_share
sudo mount -t vboxsf some_shared_folder /windows_share

Перезапустить докер-машину

docker-machine restart

Убедитесь, что содержимое папки отображается в boot2docker:

docker-machine ssh
ls -al /windows_share

Теперь вы можете монтировать папку либо с помощью запуска докеров, либо с помощью docker-compose. Например:

docker run it --rm --volume /windows_share:/windows_share ubuntu /bin/bash
ls -al /windows_share

Если изменения в файле профиля теряются после перезагрузки VM или Windows, выполните следующие действия:

1) Отредактируйте файл C:\Program Files\Docker Toolbox\start.sh и закомментируйте следующую строку:

#line number 44 (or somewhere around that)
yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"

#change the line above to:
#  yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"

Ответ 3

Я не могу заставить его работать после инструкций Ларри Цая. Я решил, что могу внести изменения в "c:\Program Files\Boot2Docker для Windows\start.sh", добавить ниже

eval "$(./boot2docker.exe shellinit 2>/dev/null | sed 's,\\,\\\\,g')"

ваша команда монтирования

eval "$(./boot2docker ssh 'sudo mount -t vboxsf c/shared /c/shared')"

Я также добавляю команду для запуска моего контейнера здесь.

eval "$(docker start KDP)"

Ответ 4

Спасибо за вашу помощь в этом. Еще несколько флагов, которые мне нужно было добавить, чтобы доступ к новому монтированию был доступен пользователю загрузочной докеры boot2docker:

sudo mount -t vboxsf -o umask=0022,gid=50,uid=1000 Ext-HD /Volumes/Ext-HD