docker-machine mount

Estimated reading time: 1 minute

Mount directories from a machine to your local host, using sshfs.

The notation is machinename:/path/to/dir for the argument; you can also supply an alternative mount point (default is the same dir path).


Consider the following example:

$ mkdir foo
$ docker-machine ssh dev mkdir foo
$ docker-machine mount dev:/home/docker/foo foo
$ touch foo/bar
$ docker-machine ssh dev ls foo

Now you can use the directory on the machine, for mounting into containers. Any changes done in the local directory, will be reflected in the machine too.

$ eval $(docker-machine env dev)
$ docker run -v /home/docker/foo:/tmp/foo busybox ls /tmp/foo
$ touch foo/baz
$ docker run -v /home/docker/foo:/tmp/foo busybox ls /tmp/foo

The files are actually being transferred using sftp (over an ssh connection), so this program (“sftp”) needs to be present on the machine - but it usually is.

To unmount the directory again, you can use the same options but the -u flag. You can also call fuserunmount (or fusermount -u) commands directly.

$ docker-machine mount -u dev:/home/docker/foo foo
$ rmdir foo

Note that files are actually being stored on the machine, not on the host. So make sure to make a copy of any files you want to keep, before removing it!

machine, mount, subcommand