从父系统安装目录到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到你的容器,像这样:
-
在boot2docker上挂载本地系统
sudo mount -t vboxsf hostfolder /boot2dockerfolder
-
在Linux容器上挂载boot2docker文件
docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
那么当你在容器文件夹里面时,你会看到你的主文件夹的内容