3 回答
TA贡献1803条经验 获得超3个赞
有几种方法可以做到这一点。最简单的方法是使用dockerfile ADD
命令,如下所示:
ADD . /path/inside/docker/container
但是,在构建dockerfile之后对主机上的此目录所做的任何更改都不会显示在容器中。这是因为在构建容器时,docker将目录压缩为a .tar
并将该上下文永久地上载到容器中。
执行此操作的第二种方法是您尝试的方式,即装入卷。由于尝试尽可能地移植,因此无法将主机目录映射到dockerfile中的docker容器目录,因为主机目录可能会根据您运行的计算机而更改。要将主机目录映射到docker容器目录,您需要-v
在使用docker run时使用该标志,如下所示:
docker run -v /host/directory:/container/directory -other -options image_name command_to_run
TA贡献1843条经验 获得超7个赞
这个问题的用户正在使用Docker version 0.9.1, build 867b2a9
,我会给你一个docker版本> = 17.06的答案。
您想要的是,在容器目录中保持本地目录同步,是通过安装类型的卷来完成的bind
。这将绑定源(您的系统)和目标(在docker容器)目录。它与在linux上安装目录几乎相同。
根据Docker文档,现在安装适当的命令mount
而不是-v
。这是它的文档:
--mount
:由多个键值对组成,以逗号分隔。每个键/值对采用<key>=<value>
元组的形式。该--mount
语法比更详细的-v
或--volume
,但按键的顺序并不显著,并且标志的价值更容易理解。该
type
安装件,其可以是bind
,volume
,或tmpfs
。(我们将使用bind)该
source
安装的。对于绑定装入,这是Docker守护程序主机上的文件或目录的路径。可以指定为source
或src
。将
destination
文件或目录安装在容器中的路径作为其值。可以指定为destination
,dst
或target
。
因此,要安装当前目录(源)与/test_container
(目标),我们将使用:
docker run -it --mount src="$(pwd)",target=/test_container,type=bind k3_s3
如果这些安装参数有空格,则必须在它们周围加上引号。当我知道他们不这样做时,我会`pwd`
改用:
docker run -it --mount src=`pwd`,target=/test_container,type=bind k3_s3
您还必须处理文件权限,请参阅此文章。
TA贡献1869条经验 获得超4个赞
2个连续的安装:我想这里的很多帖子可能都使用了两个boot2docker,你没有看到任何东西的原因是因为你从boot2docker安装的目录不是来自你的主机。
您基本上需要2个连续的安装:第一个是从主机到系统安装目录,第二个是将新目录从boot2docker安装到您的容器,如下所示:
1.在boot2docker上安装本地系统
sudo mount -t vboxsf hostfolder /boot2dockerfolder
2.在linux容器上挂载boot2docker文件
docker run -v /boot2dockerfolder:/root/containerfolder -i -t imagename
然后,当您ls
在容器文件夹中时,您将看到主机文件夹的内容。
添加回答
举报