Согласно этому руководству с веб-сайта docker, Когда вы запускаете контейнер, он автоматически делится вашим /Users/username
.
Моя текущая проблема:
Но в моей школе мой $HOME
не находится в /Users
, и когда я пытаюсь напрямую смонтировать тома в своем контейнере с помощью чего-то вроде docker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginx
(например, учебник по ссылке), я не могу изменить файлы через смонтированный том. Итак, я предполагаю, что мой $HOME
не передается автоматически.
Но если я запускаю docker instpect mysite
, я получаю:
"HostConfig": {
"Binds": [
"/nfs/zfs-student-3/users/vmonteco/site:/usr/share/nginx/html"
],
и
"Mounts": [
{
"Source": "/nfs/zfs-student-3/users/vmonteco/site",
"Destination": "/usr/share/nginx/html",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
Мой вопрос заключается просто в следующем:
Как я могу вручную поделиться каталогами с докером размещения ВМ (здесь — virtualbox), чтобы использовать его в качестве точек подключения тома?
Вот как я сделал это с Boot2docker до того, как он устарел:
С boot2docker я мог бы запустить что-то вроде:
SHAREDIR=$HOME/share
# creating share folder.
mkdir $SHAREDIR
# mount shared folder while relaunching boot2docker :
boot2docker --vbox-share="$SHAREDIR=share" up
echo "Creating and mounting \"share\" directory in boot2docker VM."
boot2docker ssh "sudo mkdir /share; sudo mount -t vboxsf share /share"
# running the container :
docker run -ti --rm -v /share:/share -v /Users:/Users base/archlinux sh
И это работало нормально.
Но теперь boot2docker устарел, и я не нашел, как это сделать с виртуальной машиной, которую я должен использовать сейчас (она использует виртуальный бокс).
Если я правильно понимаю, это должно работать так же, как работал boot2docker:
1 2
[directory from OSX] <===> [VM directory (the VM replaces Boot2docker)] <===> [container directory]
Если я все еще хорошо понимаю, единственное, что сейчас не работает, это точка [1], это было обработано средней частью небольшого скрипта, которым я только что поделился с boot2docker.
Но что я мог сделать сейчас?