docker 容器删除文件后 commit镜像大小不变?


我自己做了个镜像
apline go dfc88444bfb8 24 hours ago 197.8 MB

# docker run -it  dfc88444bfb8 sh
/ # 
/ # apk del go
(1/1) Purging go (1.5.4-r0)
Executing busybox-1.24.1-r7.trigger
OK: 22 MiB in 18 packages
/ # du -sh
23.4M

如上,操作在容器里面删除了go 的安装包,剩下的容器的/的大小是23.4M,但是执行docker commit
之后,这个镜像居然是1 latest 4442148f9f01 16 minutes ago 197.9 MB大小完全没变?为什么?

docker history 4442148f9f01

IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
4442148f9f01        3 hours ago         sh                                              46.76 kB            
dfc88444bfb8        27 hours ago        sh                                              193 MB              
d7a513a663c1        6 weeks ago         /bin/sh -c #(nop) ADD file:033ab063740d9ff4dc   4.794 MB 

我已经删除了容器中的go安装包,居然还有dfc88444bfb8 27 hours ago sh 193 MB这一层,好奇怪

我又通过Dockerfile做了同样的操作,
FROM alpine:3.3

RUN apk update --no-cache \
&& apk add go --no-cache \
&& apk del go


build出来的镜像竟然只有3 latest 92260938955c 3 hours ago 5.562 MB,郁闷了,求大神指教
已邀请:

xds2000 - 数人科技CTO

赞同来自:


你在容器内部做的操作,每一步都是一个layer,你看你贴出来的docker history结果就知道了。

要回复问题请先登录注册