我安装了 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'