Docker machine 挂载本地文件夹

Nov. 24, 2016, 10:40 p.m.
标签: docker

Windows 和 MacOS 不能原生地支持 Docker ,所以需要先启动一个 docker machine ,然后在里面运行 Docker 。所以 docker machine 实际上就是一个虚拟机,通过 VirtualBox 可以进行配置。

那么问题来了, docker machine 是一个虚拟机,所以其内部的文件系统与外部是分离的,也就是说,从 Docker 里面是无法直接访问到物理机的文件系统的。正常情况下,通过 Volume 可以将文件系统挂载到 Docker 内部,但是在 docker machine 中运行的 Docker 则只能访问到 docker machine 里的文件系统。

docker machine 在启动的时候,会自动将 Users 文件夹挂载到 docker machine 内部,如 Windows 上通过 /c/Users 即可访问,但是却无法访问其他文件夹。

如果要挂载其他文件夹,则需通过以下步骤:

  1. 通过 VirtualBox 配置,将需挂载的文件夹添加到共享目录,假设共享名字为“share”。
  2. 在 docker machine 里将共享的文件夹 mount 到 ~/share

    $ docker-machine ssh default 'mkdir -p ~/share && sudo mount -t vboxsf share ~/share'
    

接下来就可以在 docker machine 的 ~/share 访问到该目录,也就可以通过 Volume 挂载到 Docker 内部了。