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
sshfscommand above if you try andls -laon the docker home dir to test that your mount worked you won't have access:So if you
sudo -syou'll get some love:The permissions on the mounted folder are sweet as for mounting it as a volume with docker though.
Party time.