繁体   English   中英

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

[英]Manually sharing directory as docker volume mounting point on OSX

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

我的问题很简单:

如何与托管VM的docker(此处为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共享的小脚本的中间部分处理的。

但是我现在该怎么办?

看到这个答案: 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的初学者,我想详细了解这个惊人的工具,可以在我工作的公司中投入生产,但是,在开发Web系统时,我试图提高生产率。 通过这种方式,我想将OSX本地文件夹中存储的Web应用程序文件共享给在NGINX中运行的容器,以便易于同时进行测试,而又不会浪费时间。 然后,我在互联网上找到了一个解决方案,下面将向您详细介绍。

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

设定值

其次,转到“ 共享文件夹”选项卡 ,选择“ 计算机文件夹”部分下的“ 用户”项 ,或者如果尚不存在,则可以添加新共享。 写/在文件夹路径,用户(您的OSX本地文件夹的路径),在文件夹名用户和检查自动安装设为永久选项都选中

共享首选项

确认框并关闭“虚拟框”应用程序窗口。

重要的是,重新启动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可以执行相同的操作,但是速度更快...也可以尝试一下。

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

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM