Dockerfile RUN命令之间的意外行为

我有一个奇怪的问题试图顺序执行几个RUN命令。

目标是复制一个文件夹。 如果我列出目标文件夹中的文件:

  • 它和&& ls一起运行
  • 它在另一个RUN中不起作用

这是跟踪:

Step 6 : RUN cp -rf /app/httpd/htdocs/* /opt/rh/httpd24/root/var/www/html/ && ls /opt/rh/httpd24/root/var/www/html/ ---> Running in 05842445d075 modules tests ---> 05c51d512f60 Removing intermediate container 05842445d075 Step 7 : RUN ls /opt/rh/httpd24/root/var/www/html/ ---> Running in aa217a8edc37 ---> 095c9f8ac8e7 

你有什么想法是什么问题?

如此处所示 ,如果Dockerfile首先声明了VOLUME ,则可能会发生这种情况。

复制到VOLUME任何文件都将被丢弃,因为每个构build步骤都会根据映像的内容创build一个新卷,并丢弃之前构build步骤中使用的卷。