手动共享目录作为 OSX 上的 docker 卷安装点
Manually sharing directory as docker volume mounting point on OSX
根据此 tutorial from docker website,当您启动容器时,它会自动共享您的 /Users/username
。
我目前的问题:
但是在我的学校里,我的 $HOME
不在 /Users
中,当我尝试使用 docker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginx
之类的东西直接在我的容器上安装卷时(就像来自link), 我无法通过挂载的卷更改文件。所以我猜我的 $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.
可是我现在怎么办呢?
看到这个答案:
总结:
从 docker 1.8 开始,您可以通过 vbox cli 添加目录。
VBoxManage sharedfolder add <machine name/id> --name <mount_name> --hostpath <host_dir> --automount
我是 docker 的初学者,我想更多地了解这个神奇的工具,以便在我工作的公司投入生产,但是,我在开发我的网站时试图提高生产力系统。通过这种方式,我想将存储在 OSX 本地文件夹中的 Web 应用程序文件共享到我在 NGINX 中的容器 运行,以便同时轻松测试,而不会浪费时间。然后我在网上找到了一个解决方案,我将在下面详细介绍给你。
首先,打开Virtual Box App,点击docker虚拟机,然后select选项设置.
其次,转到共享文件夹选项卡,select用户项 机器下文件夹部分 或者您可以添加一个新共享(如果尚不存在)。
在文件夹路径(您的 OSX 本地文件夹的路径)中写入 /Users,在文件夹名称中写入 Users 并检查 Auto-Mount 和 Make Permanent 选项都已 选中 .
确认盒子并关闭 Virtual Box 应用程序 window。
重要的是,重新启动您的 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 目录中的文件。
我在另一个 an another solution - open source project called docker-osx-dev 中找到 - 使用 Boot2Docker + rsync 做同样的事情,但速度更快...也可以试试这个。
希望这些信息足以解决您的问题。
祝你好运!
根据此 tutorial from docker website,当您启动容器时,它会自动共享您的 /Users/username
。
我目前的问题:
但是在我的学校里,我的 $HOME
不在 /Users
中,当我尝试使用 docker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginx
之类的东西直接在我的容器上安装卷时(就像来自link), 我无法通过挂载的卷更改文件。所以我猜我的 $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.
可是我现在怎么办呢?
看到这个答案:
总结: 从 docker 1.8 开始,您可以通过 vbox cli 添加目录。
VBoxManage sharedfolder add <machine name/id> --name <mount_name> --hostpath <host_dir> --automount
我是 docker 的初学者,我想更多地了解这个神奇的工具,以便在我工作的公司投入生产,但是,我在开发我的网站时试图提高生产力系统。通过这种方式,我想将存储在 OSX 本地文件夹中的 Web 应用程序文件共享到我在 NGINX 中的容器 运行,以便同时轻松测试,而不会浪费时间。然后我在网上找到了一个解决方案,我将在下面详细介绍给你。
首先,打开Virtual Box App,点击docker虚拟机,然后select选项设置.
其次,转到共享文件夹选项卡,select用户项 机器下文件夹部分 或者您可以添加一个新共享(如果尚不存在)。 在文件夹路径(您的 OSX 本地文件夹的路径)中写入 /Users,在文件夹名称中写入 Users 并检查 Auto-Mount 和 Make Permanent 选项都已 选中 .
确认盒子并关闭 Virtual Box 应用程序 window。
重要的是,重新启动您的 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 目录中的文件。
我在另一个
希望这些信息足以解决您的问题。
祝你好运!