Mounting shared folders between OSX and the docker container is tricky due to
the intermediate boot2docker VM. You can't use the usual docker -v
option as
the docker server knows nothing about the OSX filesystem - it can only mount
folders from the boot2docker filesystem. Fortunately, you can work around this
using SSHFS.
Install sshfs on the boot2docker machine:
$ boot2docker ssh docker@boot2docker:~$ tce-load -wi sshfs-fuse
and create a folder to mount to:
docker@boot2docker:~$ mkdir ~/osx
Ensure that 'Remote Login' is enabled in 'System Preferences > Sharing' and make a note of your host IP address.
Now run sshfs on the boot2docker VM to mount a folder from your host machine:
docker@boot2docker:~$ sudo sshfs $username@$ipaddress:/Users/$username/ /home/docker/osx/
replacing $username
and $ipaddress
as appropriate. You'll have to enter
your password.
Now you can run a docker container (using the docker client on your host machine) and mount a local folder (using the path to it on the boot2docker VM), eg:
$ docker run -it -v /home/docker/osx/somefolder:/opt/somefolder ubuntu bash
and any updates made within your local folder will be immediately visible within the container.
Largely taken from the comments here: boot2docker/boot2docker#188
It's worth noting here that if you're ssh'd into the boot2docker VM as the docker user, after running the
sshfs
command above if you try andls -la
on the docker home dir to test that your mount worked you won't have access:So if you
sudo -s
you'll get some love:The permissions on the mounted folder are sweet as for mounting it as a volume with docker though.
Party time.