发现不少童鞋,除了使用buildkit 构建镜像以外,还有使用kaniko的。今天就给大家分享一下kaniko这个工具。无论是buildkit 还是kaniko 都不依赖docker去构建镜像。
直接通过官方提供的镜像启动kaniko 镜像构建
docker run
-v /tmp:/workspace
-v /root/.docker/config.json:/kaniko/.docker/config.json:ro
gcr.io/kaniko-project/executor:latest
--dockerfile Dockerfile --destination image:tag --context dir:///workspace/
--cache-dir=/workspace/cache
--cache
这里我将/tmp目录挂载到kaniko 镜像里面/workspace,然后将Dockerfile 文件也放到/tmp 目录下面。镜像构建的输出如下:
INFO[0002] Executing 0 build triggers
INFO[0002] Using files from context: [/workspace/a]
INFO[0004] Unpacking rootfs as cmd ADD a /root/ requires it.
INFO[0017] Using files from context: [/workspace/a]
INFO[0019] ADD a /root/
操作简单,不仅如此,还可以通过缓存构建,譬如通过下面的warmer镜像预先把base镜像缓存到一个目录下面,后续kaniko 挂载这个目录后便可以利用这里的缓存。除了本地缓存也支持远程镜像仓库缓存。
docker run -v $(pwd):/workspace gcr.io/kaniko-project/warmer:latest
--cache-dir=/workspace/cache --image=
上面的例子利用docker启动kaniko 但这不足以体现kaniko的功能。kaniko的使用场景主要是在k8s 里面构建镜像。官方也提供一个k8s 的demo。Yaml如下
apiVersion: v1
kind: Pod
metadata:
name: kaniko
spec:
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:latest
args: ["--dockerfile=",
"--context=",
"--destination=",
"--cache",
"--cache-dir=/cache"]
volumeMounts:
- name: kaniko-secret
mountPath: /secret
- name: kaniko-cache
mountPath: /cache
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /secret/kaniko-secret.json
restartPolicy: Never
volumes:
- name: kaniko-secret
secret:
secretName: kaniko-secret
- name: kaniko-cache
persistentVolumeClaim:
claimName: kaniko-cache-claim
页面更新:2024-04-25
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号