docker-machine/vbox 共享文件夹在 VM 重启后失效

docker-machine/vbox 共享文件夹在 VM 重启后失效

我安装了 docker-machine 并立即尝试与其创建的 VM 共享一个文件夹。以下是我所做的;

# share the folder to the VM
docker-machine stop default
vboxmanage sharedfolder add default --name apt-mirror --hostpath D:/apt-mirror
docker-machine start default
docker-machine env default

# create a mount point within the VM
docker-machine ssh default "sudo install -m 0755 -o root -g root -d /apt-mirror"

# mount the shared folder within the VM
docker-machine ssh default \
    "echo 'apt-mirror  /apt-mirror   vboxsf   defaults   0   0' \
    | sudo tee -a /etc/fstab ; sudo mount -a"

此后,我执行“docker-machine ssh default”,发现一切都按预期进行。

接下来,我尝试重新启动虚拟机以确保一切正常;

docker-machine stop default
docker-machine start default
docker-machine env default

在此之后,我执行了“docker-machine ssh default”,发现它没有存活下来;

  • /apt-mirror 不存在
  • 缺少 /etc/fstab 条目

仍然通过 ssh 会话,我可以执行此操作来恢复挂载;

sudo mkdir /apt-mirror
sudo mount -t vboxsf apt-mirror /apt-mirror -o defaults

有没有办法让初始设置能够在重启后继续存在?

答案1

我找到了答案这个 stackoverflow 帖子。以下所有步骤均以 bash 脚本的形式呈现,可在 docker-machine 终端内运行。

#!env bash

: ${NAME:=default}
: ${SHARE:=u:}
: ${MOUNT:=/u}
SCRIPT=/mnt/sda1/var/lib/boot2docker/bootlocal.sh

set -x

docker-machine stop $NAME
VBoxManage.exe sharedfolder add $NAME --name u --hostpath 'u:\' --automount 2>/dev/null || :
docker-machine start $NAME
docker-machine env $NAME
docker-machine ssh $NAME 'echo "mkdir -p $MOUNT" | sudo tee $SCRIPT'
docker-machine ssh $NAME 'echo "mount -t vboxsf -o rw,user $SHARE $MOUNT" |  sudo tee -a $SCRIPT'
docker-machine ssh $NAME '$SCRIPT'

相关内容