我刚刚在我的 Mac 上设置了 boot2docker。如何在我的 Mac 上挂载一个本地目录,以便它可以一直访问到正在运行的 Docker 容器?谢谢你的帮助!
4 回答
As of October 16, 2014, Docker supports mounting directories in the /Users path seamlessly.
From the Docker blog:
With this release we are addressing the most common issue: sharing directories between your Mac and your containers. Using Docker 1.3 with the corresponding version of boot2docker, host-mounted volumes now work the way you expect them to.
...请注意,仍然存在一些限制:例如此功能仅限于 boot2docker 的 virtualbox 配置,无法动态管理,并且仅适用于 /Users 中的目录。但是我们收到了令人兴奋的贡献来改进卷管理,因此预计该领域将在接下来的几个版本中大幅改进。
示例用法:
$ docker run -v /Users/bob/myapp/src:/src [...]
boot2docker 与 /Users 以外的共享
见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
脚本,/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
虚拟机。
boot2docker 与 VirtualBox Guest Additions
如何将 /Users 挂载到 boot2docker
tl;dr 使用 VirtualBox Guest Additions 构建您自己的自定义 boot2docker.iso(请参阅链接)或下载 http://static.dockerfiles.io/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.iso 并保存到 ~/.boot2docker/boot2docker.iso。
正如 Levi 提到的,/Users 目录是自动挂载的。这在 boot2docker 和 docker-machine 中都是如此。也就是说,如果你想在 /Users 之外挂载任何东西,所有当前的答案都是关于 Boot2docker。由于现在不赞成使用 docker-machine,因此这适用于 docker-machine:
首先,通过 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 并挂载我们刚刚共享的文件夹:
docker-machine ssh $MACHINE_NAME "sudo mount -t vboxsf -o uid=\"$U\",gid=\"$G\" \"$WORKDIR\" \"$VOL_DIR\""
注意:对于 UID 和 GID,您基本上可以使用任何整数,只要它们还没有被占用。
这是从 OS X El Capitan 上的 docker-machine 0.4.1 和 docker 1.8.3 开始测试的。