Dockerfile:如何在容器路径中挂载主机目录?

时间:2019-07-05 04:00:33

标签: docker dockerfile

如果我在本地主机中有一个日志文件夹,位于:

/var
  /logs
     apache.logs
     elasticsearch.logs
     etc... 

我想将主机的 / var / logs 目录安装到Docker容器内部的路径中,例如 / usr / var / logs / ,我该如何在dockerfile中执行此操作?因此,每次更新日志文件时,也可以在容器中对其进行访问。 谢谢

3 个答案:

答案 0 :(得分:1)

您不能在volumn上安装Dockerfile

原因:

Dockerfile将构建一个imageimage在每台计算机主机上都是独立的。

Image应该在同一平台for example on linux platform it can be running on fedora, centos, ubuntu, redhat...etc上的任何地方运行

因此,您只需将volumn安装到container中。因为container将在指定的计算机主机上运行。

希望您能理解。对不起,我的英语不好。

答案 1 :(得分:0)

尝试docker run命令中的-v option

docker run -itd -v /var/logs:/usr/var/logs image-name

这会将主机的/var/logs目录安装到容器的/usr/var/logs目录上。

希望这会有所帮助。

更新

要在dockerfile中使用sourcedest挂载目录,请使用this hack(虽然不是100%肯定)。

RUN --mount=target=/usr/var/logs,type=bind,source=/var/logs

答案 2 :(得分:0)

您可以通过两种方式实现它-https://docs.docker.com/storage/bind-mounts/

-安装

$ docker run -d -it --name devtest --mount type=bind,source=/var/logs,target=/usr/var/logs image:tag

-v

$ docker run -d -it --name devtest -v /var/logs:/usr/var/logs image:tag