Установите громкость на изображение Docker на OSX

На Mac, как вы монтируете том в контейнер Docker?

В моем linux-окне это легко. Все, что мне нужно сделать, это что-то вроде -v /src/webapp:/opt/webapp при запуске контейнера. Но Mac отличается, поскольку я должен запустить boot2docker для запуска виртуальной машины в VirtualBox. Я пробовал работать

boot2docker init
boot2docker up
boot2docker ssh # to poke around
boot2docker stop
VBoxManage sharedfolder add "boot2docker-vm" --name "Users" --hostpath /Users
boot2docker up
boot2docker ssh "sudo modprobe vboxsf"

но я получаю

modprobe: module vboxsf not found in modules.dep

Если я игнорирую это и все еще пытаюсь монтировать на VM так:

boot2docker ssh "sudo mkdir /test && sudo mount -t vboxsf Users /test"

Я получаю

mount: mounting Users on /test failed: No such device

Я чувствую, что мне не хватает чего-то чрезвычайно простого, но я не могу это понять. Любая помощь будет принята с благодарностью.

Ответ 1

Хорошо, после копания в GitHub PR, я смог выяснить, как это сделать. Для будущих читателей этот процесс должен быть исправлен в предстоящей версии boot2docker.

# assuming boot2docker and VirtualBox are installed
wget http://static.dockerfiles.io/boot2docker-v1.2.0-virtualbox-guest-additions-v4.3.14.iso
mv boot2docker-v1.2.0-virtualbox-guest-additions-v4.3.14.iso ~/.boot2docker/boot2docker.iso
# blow away your old boot2docker-vm if it exists (boot2docker down && boot2docker destroy)
boot2docker init
boot2docker up
# set DOCKER_HOST as instructed
boot2docker stop
VBoxManage sharedfolder add boot2docker-vm --name /Users --hostpath /Users
boot2docker up
# if you ssh into the VM now, you'll notice /Users is present, but empty; I don't know/care why.
boot2docker ssh "sudo mount -t vboxsf -o uid=1000,gid=50 /Users /Users"
# done

Это работало для меня, поэтому я надеюсь, что это сработает для других. В ближайшем будущем я ожидаю, что этот вопрос будет решен boot2docker, тем более, что PR, из которого я получил эти команды, был объединен.

EDIT: boot2docker 1.3.0 поддерживает это без каких-либо дальнейших изменений. После обновления я выполнил следующие команды:

boot2docker destroy  # start over
boot2docker download # download the udpated ISO
boot2docker init
boot2docker up
# done

Ответ 2

Для тех, кто ищет это в будущем, которые хотят установить что-либо другое, кроме /Users, есть script кто-то, созданный как gistub, который выполняет весь процесс для вас и является потрясающим. Просто используйте this. Это избавило меня от многих головных болей, связанных с необходимостью поддерживать виртуальный бокс. Это проверено как на Docker 1.3.0 на моем Mac, на котором работает Yosemite.

EDIT:

Теперь, когда docker-машина cli устарела в пользу или докер-машина, вот как вы можете это сделать с докер-машиной:

Сначала 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.