windows主机与Docker容器文件夹共享

  • A+
所属分类:经验分享

前言

在windows下使用Docker ToolBox时,有时候我们需要将主机某个文件夹共享到docker容器中,方便在windows主机与docker容器之间同步文件夹数据。但是我们都知道Docker ToolBox会启动virtualbox虚拟机,docker实际上是运行在虚拟机上的,而不是直接运行在windows主机上,所以没办法直接通过docker run的  参数实现主机与docker容器文件夹共享。

本文将介绍如何在windows下实现主机与docker容器之间的文件夹共享。

主要有两大步骤:

1. 配置windows主机与virtualbox虚拟机之间文件夹共享。

2. 配置virtualbox虚拟机与docker容器之间文件夹共享。

我们都知道docker run的  参数可以实现docker容器与宿主机之间目录共享。对于使用Docker Toolbox的情况,宿主机是并不是windows主机,而是在windows主机上通过virtualbox运行的虚拟机。因此,docker容器只能与虚拟机之间进行文件夹共享,要实现windows主机与docker容器之间文件夹共享,我们还需要配置windows主机与虚拟机之间文件夹共享,从而间接实现windows主机与docker容器之间文件夹共享。

一、 配置windows主机与virtualbox虚拟机之间文件夹共享

1. 在VirtualBox中添加共享文件夹

首先,打开Oracle VM VirtualBox管理器:windows主机与Docker容器文件夹共享

选择Docker ToolBox默认创建的 虚拟机,点击工具栏的“设置”按钮,打开设置窗口:

windows主机与Docker容器文件夹共享

点击左侧菜单栏的“共享文件夹”打开共享文件夹设置面板。

windows主机与Docker容器文件夹共享

默认情况下,virtualbox已经配置了c/Users目录为共享文件夹,对应虚拟机里的共享目录为/c/Users。

如果我们想共享其他文件夹,那么我们需要点击右侧的“添加共享文件夹”按钮:

windows主机与Docker容器文件夹共享

添加一个共享文件夹配置,如下:

windows主机与Docker容器文件夹共享

如上图所示,我添加了一个名称为 的共享文件夹,指向windows主机的  目录。同时,勾选“自动挂载”和“固定分配”。

(PS:我共享该文件夹的目的是,以后在我本机上对我的blog的修改就可以动态同步到docker容器中,达到实时生效的目的^_^)

windows主机与Docker容器文件夹共享

点击OK保存。

2. 挂载共享文件夹

添加共享文件夹后,需要将其挂载到虚拟机上。

1) 自动挂载到默认目录

由于我们前面添加共享文件夹时勾选了  ,当我们重启虚拟机后,共享文件夹就会被自动挂载到虚拟机上,不用手动挂载。

所以接下来我们启动 ,运行如下命令重启虚拟机:

重启后,运行如下命令进入虚拟机:

进入虚拟机后,检查一下我们的共享文件夹是否自动挂载上了。共享文件夹会被自动挂载到根目录下,路劲为:  ,如下是我的例子:

可以看到,windows主机  里的内容已经共享到虚拟机  下了。

2) 挂载到指定目录

当然,我们也可以将共享文件夹挂载到虚拟机的指定目录下。

通过 命令进入虚拟机,然后在虚拟机中创建一个目录。我们将要把windows主机的共享文件夹挂载到该目录。例如,创建 :

我们现在查看该目录下是没有任何内容的:

接下来,将windows主机的共享文件夹挂载到该目录,运行如下命令:

然后查看/home/docker/MyBlog目录:

可以看到已经成功挂载了!

但是,这种方式有一个弊端:每当重启虚拟机后,新创建的目录会丢失。

我们可以通过如下方式解决这个问题

编辑 文件中:

在文件最后增加如下配置:

保存退出虚拟机,执行如下命令重启虚拟机:

重启后,再次执行  进入虚拟机,查看是否自动挂载到我们指定的目录

可以看到,挂载成功!

二、配置virtualbox虚拟机与docker容器之间文件夹共享

这个就很简单了,在执行 命令时,通过 参数虚拟机某个目录挂载到docker容器中。

如下,将前面在虚拟机中创建的 目录挂载到docker容器的 中:

进入docker容器后,查看 目录:

可以看到,windows主机共享文件夹里的内容被成功同步到docker容器中了!

weinxin
关注微信
如有疑问,欢迎扫一扫左侧二维码添加微信好友进行咨询,我会第一时间回复您!
yglong

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: