Allows me to mount /Users into boot2docker which is incredibly useful for
my local Docker environment under Mac OSX. So from Mac I can do sth like this:
docker run -v /Users/mattes/somedir:/data/somedir [..]
.
This Dockerfile will download the latest boot2docker image (see FROM boot2docker/boot2docker
)
and adds VirtualBox Guest Additions for your running VirtualBox version.
See also boot2docker/boot2docker#284.
I tried to make the mount permanent from within the VirtualBox GUI (see screenshot)
but that didn't work. So I added the mount logic to $ROOTFS/etc/rc.d/vbox-guest-additions-permanent-mount
(see Dockerfile.tmpl)
See build log here https://gist.github.com/mattes/6bed15318e93925b1280
# generate Dockerfile from Dockerfile.tmpl
chmod +x build_docker.sh
./build_docker.sh
# build the actual boot2docker.iso with virtual box guest additions
docker build -t mattes/boot2docker-vbga .
# the following line is proposed in many tutorials, but does not work for me
# (it outputs an iso that won't work)
docker run -i -t --rm mattes/boot2docker-vbga > boot2docker.iso
# so I do:
docker run -i -t --rm mattes/boot2docker-vbga /bin/bash
# then in a second shell:
docker cp <Container-ID>:boot2docker.iso boot2docker.iso
# use the new boot2docker.iso
boot2docker stop
mv ~/.boot2docker/boot2docker.iso ~/.boot2docker/boot2docker.iso.backup
mv boot2docker.iso ~/.boot2docker/boot2docker.iso
VBoxManage sharedfolder add boot2docker-vm -name home -hostpath /Users
boot2docker up
boot2docker ssh "ls /Users" # to verify if it worked
I just tried this today on a Windows 7 box. I followed the instructions at https://medium.com/boot2docker-lightweight-linux-for-docker/boot2docker-together-with-virtualbox-guest-additions-da1e3ab2465c starting with the "...system replace the old one at ~/.boot2docker/boot2docker.iso". (I downloaded the ISO instead of building my own from http://static.dockerfiles.io/boot2docker-v1.2.0-virtualbox-guest-additions-v4.3.14.iso).
After running the boot2docker init to generate the new virtual machine, I ran the same vboxmanage to add another shared folder from a separate partition:
using cygwin bash shell
ensure the boot2docker VM is not running
boot2docker down
add the expected users partition for Windows system
VBoxManage sharedfolder add boot2docker-vm -name home -hostpath c:/Users
add my other partition
VBoxManage sharedfolder add boot2docker-vm -name -hostpath
example
VBoxManage sharedfolder add boot2docker-vm -name dockshare -hostpath f:/docker/
restart the boot2docker VM
boot2docker up
log in
boot2docker ssh
verify original users mapped
ls -alF /Users
the fun stuff, adding the second path in NON-PERSISTENT mode
sudo modprobe vboxsf && sudo mkdir / && sudo mount -t vboxsf /
example
sudo modprobe vboxsf && sudo mkdir /hostshare && sudo mount -t vboxsf dockshare /hostshare
NOTE:
To make a persistent share, you have to modify the dockerfile.tmpl shown above adding the additional shares to this section:
make mount permanent @todo it works, but its ugly. where should this go?
RUN echo '#!/bin/sh' >> $ROOTFS/etc/rc.d/vbox-guest-additions-permanent-mount;
echo 'sudo modprobe vboxsf && sudo mkdir /Users && sudo mount -t vboxsf home /Users' >> $ROOTFS/etc/rc.d/vbox-guest-additions-permanent-mount;
echo 'sudo modprobe vboxsf && sudo mkdir / && sudo mount -t vboxsf /' >> $ROOTFS/etc/rc.d/vbox-guest-additions-permanent-mount
Rerun the build script to create the ISO file and run the steps again starting with the replace current ISO after stopping the B2D VM