为什么docker镜像推送至harbor上就变小了?我们以一个游戏镜像为例,在Linux显示295MB。
[root@Worker232 ~]# docker images | grep v0.6
harbor.koten.com/koten-games/games v0.6 30ec3e6e4747 25 hours ago 295MB
[root@Worker232 ~]# docker push harbor.koten.com/koten-games/games:v0.6
在harbor上显示的单位是MiB,那也应该是281才对。
但是实际却显示221.69MiB。
这是因为harbor中显示的大小是压缩后的体积,在镜像下载和上传过程中镜像是保持压缩状态的,以保证能够更快速的下载或上传镜像,在linux命令中查看体积,是镜像下载到本地展开后的各层所占空间的总和。
这涉及docker的底层原理之镜像的压缩和解压缩。
镜像的压缩和解压缩:在推送镜像到仓库或拉取镜像时,Docker 会对镜像进行压缩和解压缩操作。镜像的压缩使用的是一种叫做“分层压缩”的技术,它可以去除重复和冗余的文件,从而减小镜像的大小。解压缩则是将镜像还原为原始的分层结构。
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!