Boot2Docker на Mac - доступ к локальным файлам

Я только что установил boot2docker на свой Mac. Как я могу поместить локальный каталог на моем Mac, чтобы он был доступен на всем пути к работающему контейнеру Docker? Спасибо за вашу помощь!

Ответ 1

По состоянию на 16 октября 2014 года Docker легко поддерживает монтаж каталогов на пути /Users.

В блоге Docker:

В этом выпуске мы рассмотрим наиболее распространенную проблему: обмен каталогами между вашим Mac и вашими контейнерами. Используя Docker 1.3 с соответствующей версией boot2docker, тома, монтируемые на хост, теперь работают так, как вы ожидаете.

... Обратите внимание, что все еще есть некоторые ограничения: например, эта функция ограничена конфигурацией виртуальных ботов boot2dockers, не может управляться динамически и работает только для каталогов в /Users. Но мы получаем интересные вклады для улучшения управления томами, поэтому ожидаем, что эта область значительно улучшится в следующих нескольких выпусках.

Пример использования: $ docker run -v /Users/bob/myapp/src:/src [...]

Ответ 2

boot2docker с другим ресурсом, кроме/Пользователи

см. https://github.com/boot2docker/boot2docker/issues/678.

Поделитесь своей папкой с VM:

VBoxManage sharedfolder add boot2docker-vm --name /tmp/Work --hostpath /CODE --automount

Основываясь на информации, найденной un bootscript.sh, вы знаете, что VM запустит bootlocal.sh script, который находится в /var/lib/boot2docker, где данные сохраняются.

Добавить файл /var/lib/boot2docker/bootlocal.sh

#!/bin/sh
# bash is not available!
mkdir -p /CODE
mount -t vboxsf /tmp/Work /CODE

Затем chmod +x /var/lib/boot2docker/bootlocal.sh и перезагрузите boot2docker-vm vm.

Ответ 3

boot2docker вместе с дополнениями для VirtualBox
Как монтировать/Пользователи в boot2docker

https://medium.com/boot2docker-lightweight-linux-for-docker/boot2docker-together-with-virtualbox-guest-additions-da1e3ab2465c

tl; dr Создайте собственный пользовательский boot2docker.iso с помощью VirtualBox Guest Дополнения (см. ссылка) или загрузите http://static.dockerfiles.io/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.isoи сохраните его в ~/.boot2docker/boot2docker.iso.

Ответ 4

Как упоминал Леви, каталог /Users автоматически устанавливается. Это справедливо как в boot2docker, так и в докер-машине. Тем не менее, если вы хотите установить что-либо за пределы /Users, все текущие ответы касаются Boot2docker. Поскольку это теперь устарело в пользу докер-машины, это работает на докер-машине:

Сначала ssh в docker-machine vm и создадим папку, на которую будем сопоставлять:

docker-machine ssh $MACHINE_NAME "sudo mkdir -p \"$VOL_DIR\""

Теперь поделитесь папкой с VirtualBox:

WORKDIR=$(basename "$VOL_DIR")
vboxmanage sharedfolder add "$MACHINE_NAME" --name "$WORKDIR" --hostpath "$VOL_DIR" --transient

Наконец, ssh в докер-машину снова и смонтируйте папку, которую мы просто разделили:

docker-machine ssh $MACHINE_NAME "sudo mount -t vboxsf -o uid=\"$U\",gid=\"$G\" \"$WORKDIR\" \"$VOL_DIR\""

Примечание. Для UID и GID вы можете в принципе использовать любые целые числа, если они еще не приняты.

Это проверено как на докер-машине 0.4.1 и докер 1.8.3 на OS X El Capitan.