基本图像导致通过Jenkinepipe道在我的泊坞窗文件caching半身像

我在随机时间观察caching半身像时,由于我的基本Python图像,当我通过生产服务器上的Jenkins构build,而不是在本地机器上,这有点奇怪。 这种破坏发生在随机的时间,并不总是。 我还没有find一个模式。

docker文件的前几个命令:

FROM python:2.7 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install --assume-yes apt-utils RUN apt-get update && apt-get install -y curl RUN apt-get update && apt-get install -y unzip 

生成过程(内部版本号:74)的日志没有caching破坏:

 17:11:02 [workspace] Running shell script 17:11:02 + docker build -t ourapi:0.5.3 . 17:11:02 Sending build context to Docker daemon 232.4 kB 17:11:03 Step 1/14 : FROM python:2.7 17:11:03 ---> 26bddf7dbe1b 17:11:03 Step 2/14 : RUN mkdir -p /usr/src/app 17:11:03 ---> Using cache 17:11:03 ---> ec1bf9b7071a 17:11:03 Step 3/14 : WORKDIR /usr/src/app 17:11:03 ---> Using cache 17:11:03 ---> df4b29a9466b 

下一个破坏caching:

 15:28:48 [workspace] Running shell script 15:28:48 + docker build -t ourapi:0.5.8 . 15:28:48 Sending build context to Docker daemon 243.2 kB 15:28:48 Step 1/14 : FROM python:2.7 15:28:50 2.7: Pulling from library/python 15:28:50 aa18ad1a0d33: Already exists 15:28:50 15a33158a136: Already exists 15:28:50 f67323742a64: Already exists 15:28:50 c4b45e832c38: Already exists 15:28:50 b71152c33fd2: Pulling fs layer 15:28:50 299c2fe5f47f: Pulling fs layer 15:28:50 6116a194f6b5: Pulling fs layer 15:28:50 3631cfa2c8cc: Pulling fs layer 15:28:50 3631cfa2c8cc: Waiting 15:28:50 6116a194f6b5: Verifying Checksum 15:28:50 6116a194f6b5: Download complete 15:28:50 b71152c33fd2: Verifying Checksum 15:28:50 b71152c33fd2: Download complete 15:28:51 299c2fe5f47f: Verifying Checksum 15:28:51 299c2fe5f47f: Download complete 15:28:51 b71152c33fd2: Pull complete 15:28:51 3631cfa2c8cc: Download complete 15:28:53 299c2fe5f47f: Pull complete 15:28:53 6116a194f6b5: Pull complete 15:28:53 3631cfa2c8cc: Pull complete 15:28:53 Digest: sha256:0cb0d5aa3cbb61374d83ce324e8ffee86cebc66a94c4d5ab08a67b650538d660 15:28:53 Status: Downloaded newer image for python:2.7 15:28:53 ---> 26bddf7dbe1b 

更新:这是因为我们的Jenkinspipe道中的一个脚本正在运行一个清除脚本,删除这些基本的图像。

dockercaching依赖于服务器上存在的先前层以及正在运行相同命令的caching层。 从你提供的命令中,你不会传递一个--pull到build命令,所以它不是python图像上游改变的结果。 剩下的两个可能原因是:

  1. 最有可能的是你已经删除了先前的构build和可能的基础图像。 这发生在docker rmidocker image prune或者docker system prune命令中。

  2. 你可以更新生成服务器上的Python图像。 你提供的日志没有显示这个,但我留下来,以防你的其他caching萧条不显示“拉”输出。 在这种情况下,另一个构build或外部进程可能会拉一个python的新副本:2.7,这将使该构build的caching失效,因为python:2.7标记现在指向一个新的图像ID。 你会在你的日志中看到这个新的ID。