如何将本地文件夹映射为Docker容器或映像的卷?

时间:2016-06-08 19:24:48

标签: docker dockerfile

我想知道我是否可以将docker中的卷映射到我的linux主机中的另一个文件夹。我想这样做的原因是,如果我没有误解,默认的映射文件夹在/ var / lib / docker / ...中,我无法访问该文件夹。因此,当我创建图像时,我正在考虑将其更改为我可以访问的主机文件夹(例如/ tmp /)。如果可以在创建映像之前完成此操作,我现在可以修改Dockerfile。或者必须在创建图像后或创建容器后完成?

2 个答案:

答案 0 :(得分:2)

我发现这篇文章帮助我使用本地目录作为docker中的卷。 https://docs.docker.com/engine/userguide/containers/dockervolumes/

我在创建新容器时使用的命令:

docker run -d -P -name randomname -v / tmp / localfolder:/ volumepath imageName

答案 1 :(得分:0)

Docker没有我知道的将命名或容器卷映射回主机的任何工具,虽然它们只是/ var / lib / docker下的子目录,所以编写自己的工具不会不可能,但你需要root访问才能运行它。请注意,通过访问主机上的docker,可能有很多方法可以访问主机上的root权限。如果源和目标位于同一文件系统上,则应该创建指向目标文件夹的硬链接。

访问指定卷的docker方式是创建一个可访问文件的一次性容器。您甚至可以创建其他主机卷来导出数据。 E.g。

docker run -it --rm \
  -v test:/source -v `pwd`/data:/target \
  busybox /bin/sh -c "tar -cC /source . | tar -xC /target"'

在哪里"测试"是要导出/复制的命名卷。您可能还需要在容器中运行chown -R $uid /target以将所有内容更改为主机上的uid。