Mac上的Boot2Docker - 访问本地文件

时间:2014-06-13 18:59:52

标签: macos docker boot2docker

我刚在Mac上设置了boot2docker。如何在我的Mac上安装本地目录,以便可以一直访问正在运行的Docker容器?谢谢你的帮助!

4 个答案:

答案 0 :(得分:11)

截至2014年10月16日,Docker支持无缝地在/ Users路径中安装目录。

来自Docker blog

  

在此版本中,我们正在解决最常见的问题:在Mac和容器之间共享目录。使用Docker 1.3和相应版本的boot2docker,主机安装的卷现在可以按照您期望的方式工作。

     

...请注意,仍然存在一些限制:例如,此功能仅限于boot2docker的虚拟机配置,无法动态管理,仅适用于/ Users中的目录。但是我们正在为改进卷管理做出令人兴奋的贡献,因此预计在接下来的几个版本中这个领域会有很大的改进。

用法示例: $ docker run -v /Users/bob/myapp/src:/src [...]

答案 1 :(得分:7)

boot2docker与/ Users

以外的共享

请参阅https://github.com/boot2docker/boot2docker/issues/678

与VM共享您的文件夹:

VBoxManage sharedfolder add boot2docker-vm --name /tmp/Work --hostpath /CODE --automount

根据发现非bootscript.sh的信息,您知道VM将运行bootlocal.sh文件夹中的/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并重新启动 // Making editable columns // For ID tblColID.setCellFactory(TextFieldTableCell.forTableColumn()); tblColID.setOnEditCommit( new EventHandler<CellEditEvent<Person, String>>() { public void handle(CellEditEvent<Person, String> t) { ((Person) t.getTableView().getItems().get( t.getTablePosition().getRow()) ).setId(t.getNewValue()); } } ); vm。

答案 2 :(得分:3)

boot2docker和VirtualBox Guest Additions
如何将/ Users挂载到boot2docker

https://medium.com/boot2docker-lightweight-linux-for-docker/boot2docker-together-with-virtualbox-guest-additions-da1e3ab2465c

  

tl; dr使用VirtualBox Guest构建您自己的自定义boot2docker.iso   添加(参见link)或下载   http://static.dockerfiles.io/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.iso   并将其保存到〜/ .boot2docker / boot2docker.iso。

答案 3 :(得分:0)

正如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上测试的。