Docker RUN ls 显示缓存文件

Tru*_*ran 7 node.js docker

我正在尝试设置一个 docker 容器并用于RUN ls帮助调试。但是,当我运行时RUN ls,docker 打印出以下内容:

 ---> Using cache
 ---> 96223b1b0748
Run Code Online (Sandbox Code Playgroud)

我希望它注销文件夹中的文件。有谁知道会发生什么?

这是我的完整 Dockerfile:

FROM node:latest 

WORKDIR /app

COPY app .

RUN ls
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Yua*_*kun 7

Docker 会缓存最近构建的层,以便后续构建可以重用它们。

打破这种行为的最简单方法是在构建期间使用该--no-cache标志:

docker build --no-cache ...
Run Code Online (Sandbox Code Playgroud)

然而,这将使所有缓存的层无效。如果您仍然想在指令之前使用缓存层RUN ls,则可以在其前面添加以下行:

ARG CACHE_TS=default_ts
Run Code Online (Sandbox Code Playgroud)

然后在每个新构建中为该参数赋予新值:

docker build --build-arg CACHE_TS=$(date +%s) ...
Run Code Online (Sandbox Code Playgroud)

请参阅此 Github 问题:https://github.com/moby/moby/issues/22832