如何在Dockerfile中使用VOLUME来保存目录中的单个文件?

我正在尝试Dockerize的这个应用程序在安装目录的根目录下有configuration文件。 如果我使用VOLUME在主机上挂载安装目录,我也将在主机上安装应用程序。 我只想将configuration文件存储在主机上。

我应该在容器中使用硬链接并使用VOLUME来安装具有硬链接的目录吗? 硬链接甚至在一个容器中工作?

你可以挂载单个文件。 以下是来自docker文档https://docs.docker.com/engine/userguide/containers/dockervolumes/

将主机文件挂载为数据卷

-v标志也可以用来从主机上挂载一个文件 – 而不仅仅是目录。

 $ docker run --rm -it -v ~/.bash_history:/root/.bash_history ubuntu /bin/bash 

这会让你进入一个新的容器中的bash shell,你将从主机获得你的bash历史logging,当你退出容器时,主机将在容器中input命令的历史logging。

注意:用于编辑文件(包括vi和sed-in-place)的许多工具可能会导致inode更改。 由于Docker v1.1.0,这将产生一个错误,如“sed:无法重命名./sedKdJ9Dy:设备或资源繁忙”。 在你想编辑挂载文件的情况下,反而挂载父目录通常是最容易的。