在OSX上手动共享目录作为docker卷安装点

根据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" } 

我的问题是这样的:

我如何手动与虚拟机托pipe泊坞窗(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已经被弃用了 ,我没有find如何使用我现在必须使用的虚拟机(它使用virtualbox)来做到这一点。

如果我理解的很好,它应该和boot2docker的工作方式一样:

  1 2 [directory from OSX] <===> [VM directory (the VM replaces Boot2docker)] <===> [container directory] 

如果我仍然很好理解,那么现在唯一不行的就是这个问题[1] ,这是由我刚刚与boot2docker分享的小脚本的中间部分处理的。

但是我现在怎么办?

看到这个答案: https : //stackoverflow.com/a/32030385/2434234

总结:从docker 1.8开始,你可以通过vbox cli添加目录。

 VBoxManage sharedfolder add <machine name/id> --name <mount_name> --hostpath <host_dir> --automount 

我是docker工人的初学者,我想了解更多关于这个令人惊叹的工具,以便在我工作的公司投入生产,但是,我正在努力提高生产力,同时我正在开发我的networking系统。 通过这种方式,我想将我的Web应用程序文件存储在OSX本地文件夹中,以便在NGINX中运行的容器同时轻松testing,而不会浪费时间。 然后,我在互联网上find了一个解决scheme,我将在下面详细介绍给你。

首先,打开Virtual Box App ,点击Docker虚拟机并selectSettings(设置)选项。

设置

其次,转到“ 共享文件夹”选项卡 ,select“ 计算机文件夹”部分下的“ 用户”项 ,或者如果尚未存在,则可以添加新共享。 文件夹path(OSX本地文件夹path)中的写入/用户,文件夹名称中的用户,并检查是否同时选中 自动安装制作永久选项。

共享首选项

确认框并closuresVirtual Box应用程序窗口。

重要的是,重新启动Docker虚拟机。

您可以使用下面的命令重新启动:

 docker-machine restart 

最后,你只需要用下面的命令启动你的容器:

 docker run -it -v Local-OSX-Path:Container-Path container-name /bin/bash 

例:

 docker run -it -v /Users/username/Documents/Workspaces/www:/var/www/html -p 8080:80 debian-nginx:1.0 /bin/bash 

当你访问你的容器时,可以很容易地看到本地OSX目录中的文件。

我在另一个问题中发现了另一个解决scheme – 开源项目叫做docker -osx-dev – 使用Boot2Docker + rsync来做同样的事情,但是速度更快…也可以试试这个。

我希望这些信息足以解决你的问题。

祝你好运!