Dockerfile:通过RUN对文件系统所做的更改不会持久

时间:2019-11-29 06:45:58

标签: docker

我无法通过网络搜索site:stackoverflow.com dockerfile RUN fs changes not persisted找到那些特殊之处。

我做了Dockerfile,并想通过RUN对图片进行一些更改。首先,我想更改文件属性,但是启动容器中没有更改。我发现此帖子大约涉及docker的{​​{1}}错误和解决方法:https://serverfault.com/questions/772227/chmod-not-working-correctly-in-docker。但是,现在我只是尝试通过chmod中的RUN touch /path/file创建一个文件,并且已经在下一个命令(据我了解文档,为docker的下一层)上的更改(该文件)消失了。据我所知,否则Dockerfile会如何工作,因为它将对映像中的文件系统进行更改...为什么该特定apt install的结果不持久?下面的文档说的相反(或者我误解了RUN的含义):

https://docs.docker.com/engine/reference/builder/

  

RUN指令将在新的层上执行任何命令   当前图像并提交结果。结果承诺   图像将用于Dockerfile中的下一步。

这里是commit的输出(请参见步骤6和7;创建了dockeruser, btw ):

docker build --no-cache -t yandex:user5 yandex2/

2 个答案:

答案 0 :(得分:1)

问题是使用基础映像中的卷:

  

在Dockerfile中更改卷:如果有构建步骤   在声明后更改卷中的数据,那些   更改将被丢弃。

请参阅This

答案 1 :(得分:0)

解决方法是使用COPY docker doc

COPY path/to/local/file /var/loadtest/chmodtest.txt