24

我在 Win7 上运行 boot2docker 1.3。

我想连接一个共享文件夹。

在图像属性-> 共享文件夹下的 VirtualBox 管理器中,我添加了我想要的文件夹并将其命名为“c/shared”。选中“自动安装”和“永久安装”框。

当 boot2docker 启动时,它并没有被挂载。我必须做一个额外的:

sudo mount -t vboxsf c/shared /c/shared

让它出现。因为我每次使用 docker 时都需要它,所以我希望它只是在启动时运行,或者已经在那里。所以我想如果有一些我可以添加的启动脚本,但我似乎无法找到它会在哪里。

谢谢

编辑:它在向我大喊这是Mac 上 Boot2Docker 的副本 - 访问本地文件,这是一个不同的问题。我想挂载一个不是默认文件夹之一的文件夹,例如 OSX 上的 /User 或 Windows 上的 /c/Users 。我特别要求启动脚本。

4

5 回答 5

20

/var/lib/boot2docker/bootlocal.sh可能适合您的需要,它将由初始脚本运行/opt/bootscripts.sh

并且bootscripts.sh还将输出放入/var/log/bootlocal.log,请参见下面的部分(boot2docker 1.3.1 版本)

# Allow local HD customisation
if [ -e /var/lib/boot2docker/bootlocal.sh ]; then
   /var/lib/boot2docker/bootlocal.sh > /var/log/bootlocal.log 2>&1 &
fi 

我的一个用例是

我通常把shared目录作为/c/Users/larry/shared,然后我添加脚本

#/bin/bash
ln -s  /c/Users/larry/shared /home/docker/shared

所以每次,我都可以~/shared像在主机中一样访问 boot2docker

请参阅FAQ.md (由@KCD 提供)

于 2014-11-16T15:16:00.223 回答
7

如果使用 boot2docker (Windows),您应该执行以下操作:

首先为 boot2docker 虚拟机创建共享文件夹:

"C:/Program Files/Oracle/VirtualBox/VBoxManage" sharedfolder add default -name some_shared_folder -hostpath /c/some/path/on/your/windows/box

#Then make this folder automount 
docker-machine ssh
vi /var/lib/boot2docker/profile

在配置文件末尾添加以下内容:

sudo mkdir /windows_share
sudo mount -t vboxsf some_shared_folder /windows_share

重启码头机器

docker-machine restart

验证文件夹内容在 boot2docker 中是否可见:

docker-machine ssh
ls -al /windows_share

现在您可以使用 docker run 或 docker-compose 挂载该文件夹。例如:

docker run it --rm --volume /windows_share:/windows_share ubuntu /bin/bash
ls -al /windows_share

如果 VM 或 Windows 重新启动后配置文件中的更改丢失,请执行以下操作:

1) 编辑文件 C:\Program Files\Docker Toolbox\start.sh 并注释掉以下行:

#line number 44 (or somewhere around that)
yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"

#change the line above to:
#  yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
于 2016-06-07T23:55:24.437 回答
2

感谢您对此的帮助。为了让 boot2docker “docker” 用户可以访问新的挂载,我需要添加一些额外的标志:

sudo mount -t vboxsf -o umask=0022,gid=50,uid=1000 Ext-HD /Volumes/Ext-HD
于 2015-07-25T03:43:01.300 回答
1

我无法按照 Larry Cai 的指示让它工作。我想我可以更改“c:\Program Files\Boot2Docker for Windows\start.sh”,在下面添加

eval "$(./boot2docker.exe shellinit 2>/dev/null | sed 's,\\,\\\\,g')"

你的挂载命令

eval "$(./boot2docker ssh 'sudo mount -t vboxsf c/shared /c/shared')"

我还在此处添加了启动容器的命令。

eval "$(docker start KDP)"

于 2015-07-06T04:25:48.773 回答
0

使用 docker 1.3,您不再需要手动挂载。只要主机 vm 上的源位于您的用户目录中,卷就应该可以正常工作。

https://blog.docker.com/2014/10/docker-1-3-signed-images-process-injection-security-options-mac-shared-directories/

于 2014-10-29T20:37:19.717 回答