如何创建用于构建docker slim的tekton task
用于Docker Slim镜像瘦身的Tekton Task实现方案
前置依赖
- 集群已部署Tekton Pipelines v0.30+ 版本
- 已配置具备目标镜像仓库读写权限的ServiceAccount,关联对应docker config类型的Secret
- 集群容器运行时适配Docker/containerd,对应操作权限已开放
完整Task定义示例
apiVersion: tekton.dev/v1 kind: Task metadata: name: docker-slim-build spec: params: - name: SOURCE_IMAGE type: string description: 待瘦身的原始镜像地址 - name: TARGET_IMAGE type: string description: 瘦身完成后输出的镜像地址 - name: EXTRA_ARGS type: string default: "" description: docker-slim 命令额外传入参数 workspaces: - name: dockerconfig description: 存放镜像仓库认证配置的workspace,对应.docker/config.json文件 mountPath: /root/.docker/ optional: false steps: - name: slim-build-and-push image: dslim/docker-slim:1.40.11 securityContext: privileged: true env: - name: DOCKER_CONFIG value: /root/.docker/ script: | #!/bin/sh slim build \ --target $(params.SOURCE_IMAGE) \ --tag $(params.TARGET_IMAGE) \ --push \ $(params.EXTRA_ARGS)
关键注意事项
- 权限配置:如果集群禁止特权容器运行,可将步骤中的
privileged: true替换为挂载宿主机/var/run/docker.sock到容器内的/var/run/docker.sock路径,同样可以获取容器运行时操作权限 - 瘦身兼容性验证:不是所有镜像都支持Docker Slim自动瘦身,对于依赖动态加载外置资源、未显式声明ENTRYPOINT的镜像,建议先在本地执行slim build测试可用性,再配置到流水线中;可通过
--include-path参数手动指定需要保留的文件/目录,避免瘦身丢失必要依赖 - 运行时探针配置:如果待瘦身镜像是Web服务类应用,可传入
--http-probe参数,让Docker Slim自动发起接口请求扫描运行时依赖,保留端口暴露、健康检查等配置,避免瘦身完成后镜像无法正常启动 - 缓存优化:高频执行的流水线可额外新增一个PVC类型的Workspace挂载到
/var/lib/docker路径作为镜像层缓存,减少重复拉取镜像的耗时 - 多架构适配:如果需要构建多架构镜像,需要在EXTRA_ARGS中传入
--platform指定对应架构,避免生成的镜像架构和运行环境不匹配
内容的提问来源于stack exchange,提问作者Ash Poblete
相关产品推荐
相关产品推荐

