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).

Example

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
bar

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

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

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

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