用例是我要下载包含python代码文件的图像。假定该图像没有安装任何文本编辑器。因此,我想在主机上安装驱动器,以便容器中的文件显示在此主机安装中,并且我可以使用主机上安装的其他编辑器来更新代码。保存更改将反映在图像中。
如果我运行以下>
docker run -v /host/empty/dir:/container/folder/with/code/files -it myimage
/ host / empty / dir 仍然为空,浏览容器dir也将其显示为空。我想要的是 / container / folder / with / code / files 的文件内容,显示在 / host / empty / dir
中答案 0 :(得分:0)
您的/host/empty/dir
始终为空,因为卷绑定将空文件夹替换(覆盖)了容器文件夹。但是您不能做相反的事情,也就是说,您需要使用一个容器文件夹来替换您的主机文件夹。
但是,有一种解决方法,方法是将文件从容器文件夹手动复制到主机文件夹。在按照您的建议使用它们之前。
例如:
docker run -v /host/empty/dir:/some-temp-folder -it myimage
/container/folder/with/code/files
内容复制到/some-temp-folder
中,用容器文件夹填充主机文件夹/host/empty/dir
上运行具有体积映射的容器,但是现在此文件夹不再为空:run -v /host/empty/dir:/container/folder/with/code/files -it myimage
请注意,步骤1和2可以替换为:Copying files from Docker container to host
答案 1 :(得分:0)
塞巴斯蒂安·赫尔伯特(SébastienHelbert)的回答是正确的。但是仍然有一种方法可以分两个步骤进行。
首先运行容器以提取文件:
docker run --rm -it myimage
在另一个终端中,键入此命令以从容器中复制所需内容。
docker cp <container_id>:/container/folder/with/code/files /host/empty/dir
现在停止容器。停止时将删除(--rm)。 现在,如果您运行原始命令,它将按预期运行。
docker run -v /host/empty/dir:/container/folder/with/code/files -it myimage
还有另一种无需复制即可从容器内访问文件的方法,但这很麻烦。