小工具 Kaniko 使用

网友投稿 281 2022-09-08

小工具 Kaniko 使用

平常我们在pipeline里面执行docker build的操作的时候,一般是下面的步骤,登录registry,根据dockerfile生成镜像,给镜像打标签,然后推送到registry里面。

docker login docker build docker tag docker push

这种操作很常见。如果我们的CI工具本身是一个容器,我们会遇到docker in docker的问题。解决这种dind的一种做法是在挂载CI的容器的时候,挂载宿主机的docker daemon, 比如 /var/run/docker.sock。另外一种方式就是使用dind的镜像,在容器里面嵌套容器。这两种方式都有安全方面的问题,因为需要运行在特权模式下。

现在还有一种方式,就是kaniko。kaniko不依赖于docker daemon,每条docker命令都在用户空间执行。因此很适合k8s这样的环境。

官方文档core app的docker 镜像推送到Azure Container Registry里面。 我已经在CI Variable里面定义了三个变量用于验证登录。kaniko可以把build,tag和push等操作一条命令就实现了,而且无需考虑docker in docker的问题。

build-code-job-main-V2: image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] stage: build variables: IMAGE_NAME: "dotnet_demo" CONTAINER_SERVER: "gitlabazuredemo.azurecr.io" script: - echo "kaniko test" - echo "$(pwd)" - >- /kaniko/executor --context "$(pwd)" --dockerfile "$(pwd)/Dockerfile" --destination "${CONTAINER_SERVER}/${IMAGE_NAME}:${tagName}" --destination "${CONTAINER_SERVER}/${IMAGE_NAME}:latest" --destination "${CONTAINER_SERVER}/${IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}" rules: - if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+.*/ - if: $CI_COMMIT_REF_NAME == "main"

执行效果

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kubernetes应用发布思路分析
下一篇:不再是营销口号,隐私将成苹果业务优势!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~