如何删除Docker镜像的所有构建历史?

时间:2019-04-22 03:00:06

标签: docker

执行docker history <image_name>时,它将显示docker映像构建的完整历史记录。有没有办法删除此历史记录?

我尝试过docker build --square ...,但是没有用。历史依然存在。

2 个答案:

答案 0 :(得分:2)

您可以使用多阶段构建。这是一个雄猫图像的示例:

docker pull tomcat:7-jre8
docker history tomcat:7-jre8

这将显示图像的完整历史记录。

我现在创建这样的Dockerfile:

FROM tomcat:7-jre8 as orig

FROM alpine:latest

COPY --from=orig / /

我构建它:

docker build -t mytomcat:1.0 .

如果我查看历史记录,这就是我现在看到的内容:

docker history mytomcat:1.0

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
c3cde992658a        6 minutes ago       /bin/sh -c #(nop) COPY dir:f31f2e5f414562467…   454MB
5cb3aa00f899        6 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
<missing>           6 weeks ago         /bin/sh -c #(nop) ADD file:88875982b0512a9d0…   5.53MB

测试新图像:

docker run -ti --rm mytomcat:1.0 bash

root@62d8c9934bd4:/# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
root@62d8c9934bd4:/# curl http://localhost:8080
...

希望这就是您想要的。如果没有,请告诉我。

答案 1 :(得分:1)

我无法在某处对此进行测试,但是可以先对图像进行docker export,然后对docker import进行图像处理吗?我相信,这会将所有图像“拉平”到容器文件系统中,一路删除历史记录。 This博客文章似乎支持这一想法。