boot2docker启动脚本,用于装载带有主机的本地共享文件夹



我正在Win7上运行boot2docker 1.3。

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

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

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

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

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

感谢

编辑:它对我大喊大叫,说这是Mac上Boot2Docker的复制品——访问本地文件,这是一个不同的问题。我想挂载一个不是默认文件夹的文件夹,比如OSX上的/User或windows上的/c/Users。我特别要求提供启动脚本。

/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

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

参见FAQ.md(由@KCD提供)

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

首先为boot2docker VM:创建共享文件夹

"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

现在,您可以使用dockerrun或dockercompose装载文件夹。例如:

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

感谢您的帮助。我需要添加一些额外的标志,以便boot2docker"docker"用户可以访问新的装载:

sudo mount -t vboxsf -o umask=0022,gid=50,uid=1000 Ext-HD /Volumes/Ext-HD

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

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

按照蔡的指示,我无法让它工作。我想我可以更改"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)"

最新更新