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 в окнах. И я специально запрашиваю сценарии запуска.
Ответы
Ответ 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
Ответ 5
С docker 1.3 вам больше не нужно устанавливать вручную. Объемы должны работать должным образом, пока источник на хосте vm находится в вашем каталоге пользователя.
https://blog.docker.com/2014/10/docker-1-3-signed-images-process-injection-security-options-mac-shared-directories/