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

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

主要有两大步骤:

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

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

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

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

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

首先,打开Oracle VM VirtualBox管理器:

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

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

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

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

关于Docker目录挂载的总结(二)

 

 

如上图所示,我添加了一个名称为 E:\workspace\MyBlog 目录。同时,勾选“自动挂载”和“固定分配”。

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

点击OK保存。x

2. 挂载共享文件夹

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

1) 自动挂载到默认目录

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

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

 
 
 
 
 
 
Shell
 
1
restart

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

 
 
 
 
 
 
Shell
 
1
ssh

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

 
 
 
 
 
 
Shell
 
1
2
3
4
5
6
MyBlog
8
.iml
.xml
/
/

可以看到,windows主机 /MyBlog 下了。

2) 挂载到指定目录

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

通过 /home/docker/MyBlog :

 
 
1
MyBlog

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

 
 
1
2
MyBlog
0

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

 
 
 
 
 
 
Shell
 
1
MyBlog

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

 
 
 
 
 
 
Shell
 
1
2
3
4
5
6
/
8
.iml
.xml
/
/

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

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

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

编辑 /mnt/sda1/var/lib/boot2docker/profile 文件中:

 
 
 
 
 
 
Shell
 
1
profile

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

 
 
1
2
MyBlog
MyBlog

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

 
 
 
 
 
 
Shell
 
1
restart

重启后,再次执行 /home/docker/MyBlog :

 
 
 
 
 
 
Shell
 
1
2
3
4
5
6
/
8
.iml
.xml
/
/

可以看到,挂载成功!

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

这个就很简单了,在执行 -v 参数虚拟机某个目录挂载到docker容器中。

如下,将前面在虚拟机中创建的 /usr/tmp/MyBlog 中:

 
 
 
 
 
 
Shell
 
1
bash

进入docker容器后,查看 /usr/tmp/MyBlog 目录:

 
 
 
 
 
 
Shell
 
1
2
3
4
5
6
7
8
9
# ll /usr/tmp/MyBlog/
20
/
/
/
*
*
/
/

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-20
  • 2021-10-27
  • 2021-11-07
  • 2022-12-23
猜你喜欢
  • 2021-09-28
  • 2021-07-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-08
  • 2022-12-23
相关资源
相似解决方案