0

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

我的问题很简单:

我如何手动与托管 docker 的 VM 共享目录(此处为 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已被弃用,我没有找到如何使用我现在必须使用的 VM(它使用 virtualbox)来执行此操作。

如果我理解得很好,它的工作方式应该与 boot2docker 的工作方式相同:

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

如果我仍然理解得很好,那么现在唯一不起作用的是点[1],这是由我刚刚与 boot2docker 共享的小脚本的中间部分处理的。

但我现在怎么办?

4

2 回答 2

3

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

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

VBoxManage sharedfolder add <machine name/id> --name <mount_name> --hostpath <host_dir> --automount
于 2016-02-17T00:39:01.353 回答
2

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

首先,打开Virtual Box App,点击 docker 虚拟机并选择选项Settings

设置

其次,转到共享文件夹选项卡,选择机器文件夹部分下的用户项目,或者如果它尚不存在,您可以添加新共享。在文件夹路径(OSX 本地文件夹的路径)中写入 /Users,在文件夹名称中写入用户,并检查是否同时选中了Auto -MountMake Permanent选项。

共享偏好

确认这些框并关闭 Virtual 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 目录中的文件。

我在另一个问题中找到了另一个解决方案——名为 docker -osx-dev 的开源项目——使用 Boot2Docker + rsync 来做同样的事情,但速度更快……也可以试试这个。

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

祝你好运!

于 2016-05-18T00:30:31.517 回答