How to share a folder with a docker container on OSX
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: https://github.com/boot2docker/boot2docker/issues/188
This comment has been minimized.
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.