从父系统安装目录到docker中的容器

如何挂载目录从父系统到容器在docker?

*更新 – 请参阅下面的答案。 这不再是正确的答案*

您无法通过devise安装它们,因为Docker不能再保证可重复的执行环境。

但是,您可以:

1)导入主机的根文件系统,并从中创build一个新的映像:

tar -C / -c . | docker import - entend/custombase 

2)导入一个引导根文件系统,例如运行“debootstrap”的结果。 (请注意,官方的“基础”图像是如何创build的,所以你可能会更好地运行“docker pull base”)

 debootstrap precise ./bootstrap tar -C ./bootstrap -c . | docker import - entend/ubuntubase 

3)运行时将本地目录的内容注入容器。

 IMAGE=base; SRC=./stuff; DST=/tmp/stuff; CMD="echo hello world"; tar -C $src -c . | docker run $IMAGE -i /bin/sh -c "tar -C $DST -x; $CMD" 

这将从$ IMAGE运行容器,将主机目录$ SRC复制到容器目录$ DST,然后运行命令$ CMD

最后一个示例通常用于在容器中运行构build命令之前插入源代码。

希望这可以帮助!

就像最后一个更新一样,这个特性现在已经在Docker中发布了(尽pipe自@ @imiric链接的pull请求以来API已经发生了变化)。

只需使用一个像

 docker run -v /tmp:/root myImage 

为了从主机上挂载/tmp作为映像中的/root

来源: https : //docs.docker.com/engine/userguide/dockervolumes/

只是为了更新这个问题,Docker很快就可以实现。

这个拉取请求实际上已经实现了这个function,并且很快将合并到主。

如果你安装了这个叉子,你现在可以使用它。

可能的docker工人:

将数据装入应用程序容器

 docker run -t -i -rm -volumes-from DATA -name client1 ubuntu bash 

TRICK FOR OSX和WINDOWS

2个连续的坐骑:我猜这里的许多post可能会使用两个boot2docker,原因是你没有看到任何东西,因为你是从boot2docker挂载一个目录而不是你的主机。 你基本上需要2个连续的挂载:第一个从你的主机挂载一个目录到你的系统,第二个挂载新的目录从boot2docker到你的容器,像这样:

  1. 在boot2docker上挂载本地系统

     sudo mount -t vboxsf hostfolder /boot2dockerfolder 
  2. 在Linux容器上挂载boot2docker文件

     docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename 

那么当你在容器文件夹里面时,你会看到你的主文件夹的内容