Kaniko缓存

半兽人 发表于: 2024-01-16   最后更新时间: 2024-01-25 22:28:25  
{{totalSubscript}} 订阅, 1,523 游览

缓存

我们在用kaniko打包的时候,引用的外部镜像每次都会去拉取,导致打包非常缓慢。

kaniko提供了将外部镜像提前缓存到本地,kaniko pod可直接使用的方式。

缓存基础镜像(Caching Base Images)

kaniko 可以将镜像缓存在本地目录中,该目录可以挂载到 kaniko pod 中。所以,必须首先缓存镜像(只读的)。gcr.io/kaniko-project/warmer 提供了打缓存镜像的方法:

docker run -v $(pwd):/workspace gcr.io/kaniko-project/warmer:latest --cache-dir=/workspace/cache --image=<image to cache> --image=<another image to cache>

docker run -v $(pwd):/workspace gcr.io/kaniko-project/warmer:latest --cache-dir=/workspace/cache --dockerfile=<path to dockerfile>

docker run -v $(pwd):/workspace gcr.io/kaniko-project/warmer:latest --cache-dir=/workspace/cache --dockerfile=<path to dockerfile> --build-arg version=1.19
  • --image可以指定任意数量的镜像。
  • --dockerfile可以指定用于缓存的dockerfile的路径。

这些命令将组合起来,把这些镜像按摘要缓存到一个名为cache的本地目录中。缓存填充完成后,就可以使用与上述相同的--cache=true标志选择缓存。本地缓存的位置通过 --cache-dir 标志提供,默认为 /cache

实战:

openjdk缓存

docker run -v $(pwd):/workspace kubebiz/kaniko-project:warmer-v1.19.3 --cache-dir=/workspace/cache --image=openjdk:8u342-

实战2:

从自定义harbor仓库拉取自定义镜像,进行缓存:

docker tag openjdk:8u342-jre your.k8s.cluster.api:8070/sys/openjdk:8u342-jre
docker push your.k8s.cluster.api:8070/sys/openjdk:8u342-jre

docker run --add-host=your.k8s.cluster.api:192.168.0.152 -v $(pwd):/workspace kubebiz/kaniko-project:warmer-v1.19.3 --cache-dir=workspace --image=your.k8s.cluster.api:8070/sys/openjdk:8u342-jre --insecure-pull

REF

https://github.com/GoogleContainerTools/kaniko?tab=readme-ov-file#flag---cache

更新于 2024-01-25

查看kaniko更多相关的文章或提一个关于kaniko的问题,也可以与我们一起分享文章