searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

基于kaniko镜像自定义镜像

2023-10-25 09:30:37
113
0

背景

kaniko官网:  github.com/GoogleContainerTools/kaniko

官方的kaniko 镜像没有shell,如果要在一个step里执行shell 命令,需要自定义镜像,如果在tekton 的task中,在一个step中执行多个任务,比如先wget下载代码,然后使用kaniko打包镜像,推送,然后curl 一个webhook接口,那么就需要自定义一个包含支持shell 的wget,curl命令和kaniko的镜像。

自定义镜像

可以基于Linux的最小发行镜像alpine整合kaniko二进制文件进行自定义,alpine支持bash命令行,然后下载想要的命令,比如wget,curl等,在把官方kaniko镜像的二进制文件COPY到alpine镜像里。

步骤:

1:装好docker服务

2:下载官方的kaniko镜像,截止23年10月25日,官方最新版本是1.17.0

如果无法科学上网的同学,可以下载   cloud.189.cn/web/share?code=yUziUv3MRZba(访问码:oj7v,自行加上hxxps协议头)

下载后文件名为kaniko.v1.17.0.gz,自行docker load < kaniko.v1.17.0.gz 即可

可以使用docker images 查看load进去的镜像为 gcr.io/kaniko-project/executor:v1.17.0

3:构建镜像

生成以下Dockerfile,保存为Dockerfile,这里除了引入alpine,还安装了wget,curl ,更新了coreutils

# Use this FROM instruction as shortcut to use --copy=from kaniko below
# It's also possible to use directly COPY --from=gcr.io/kaniko-project/executor
FROM gcr.io/kaniko-project/executor:v1.17.0 AS kaniko

FROM alpine:3.18.4

# 将 alpine linux apk 的安装源改为国内镜像可解决
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk --no-cache add --update wget curl coreutils && rm -rf /var/cache/apk/*

# Add kaniko to this image by re-using binaries and steps from official image

COPY --from=kaniko /kaniko/executor /kaniko/executor
COPY --from=kaniko /kaniko/docker-credential-gcr /kaniko/docker-credential-gcr
COPY --from=kaniko /kaniko/docker-credential-ecr-login /kaniko/docker-credential-ecr-login
COPY --from=kaniko /kaniko/docker-credential-acr-env /kaniko/docker-credential-acr-env
COPY --from=kaniko /etc/nsswitch.conf /etc/nsswitch.conf
COPY --from=kaniko /kaniko/.docker /kaniko/.docker

ENV PATH $PATH:/usr/local/bin:/kaniko
ENV DOCKER_CONFIG /kaniko/.docker/
ENV DOCKER_CREDENTIAL_GCR_CONFIG /kaniko/.config/gcloud/docker_credential_gcr_config.json

在Dockerfile 路径执行 

docker build -t kaniko-tool:v1.17.0 .

出现以下显示,说明自定义镜像完成

用docker images命令可以自定义的镜像大小81.5MB,比shell-tool,基于alpine (7.34MB) 安装 wget,curl的40.5M,和kaniko 1.17.0的67.7M 加起来小

测试自定义镜像

可以直接用docker run,

或者把镜像推送到k8s的harbor后,在k8s用以下命令运行(这里推送到faas的仓库)

kubectl run -i -t --rm kaniko-tool --image=33.0.0.15:30012/faas/kaniko-tool:v1.17.0 --namespace=default
0条评论
0 / 1000
张****钏
15文章数
1粉丝数
张****钏
15 文章 | 1 粉丝
原创

基于kaniko镜像自定义镜像

2023-10-25 09:30:37
113
0

背景

kaniko官网:  github.com/GoogleContainerTools/kaniko

官方的kaniko 镜像没有shell,如果要在一个step里执行shell 命令,需要自定义镜像,如果在tekton 的task中,在一个step中执行多个任务,比如先wget下载代码,然后使用kaniko打包镜像,推送,然后curl 一个webhook接口,那么就需要自定义一个包含支持shell 的wget,curl命令和kaniko的镜像。

自定义镜像

可以基于Linux的最小发行镜像alpine整合kaniko二进制文件进行自定义,alpine支持bash命令行,然后下载想要的命令,比如wget,curl等,在把官方kaniko镜像的二进制文件COPY到alpine镜像里。

步骤:

1:装好docker服务

2:下载官方的kaniko镜像,截止23年10月25日,官方最新版本是1.17.0

如果无法科学上网的同学,可以下载   cloud.189.cn/web/share?code=yUziUv3MRZba(访问码:oj7v,自行加上hxxps协议头)

下载后文件名为kaniko.v1.17.0.gz,自行docker load < kaniko.v1.17.0.gz 即可

可以使用docker images 查看load进去的镜像为 gcr.io/kaniko-project/executor:v1.17.0

3:构建镜像

生成以下Dockerfile,保存为Dockerfile,这里除了引入alpine,还安装了wget,curl ,更新了coreutils

# Use this FROM instruction as shortcut to use --copy=from kaniko below
# It's also possible to use directly COPY --from=gcr.io/kaniko-project/executor
FROM gcr.io/kaniko-project/executor:v1.17.0 AS kaniko

FROM alpine:3.18.4

# 将 alpine linux apk 的安装源改为国内镜像可解决
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk --no-cache add --update wget curl coreutils && rm -rf /var/cache/apk/*

# Add kaniko to this image by re-using binaries and steps from official image

COPY --from=kaniko /kaniko/executor /kaniko/executor
COPY --from=kaniko /kaniko/docker-credential-gcr /kaniko/docker-credential-gcr
COPY --from=kaniko /kaniko/docker-credential-ecr-login /kaniko/docker-credential-ecr-login
COPY --from=kaniko /kaniko/docker-credential-acr-env /kaniko/docker-credential-acr-env
COPY --from=kaniko /etc/nsswitch.conf /etc/nsswitch.conf
COPY --from=kaniko /kaniko/.docker /kaniko/.docker

ENV PATH $PATH:/usr/local/bin:/kaniko
ENV DOCKER_CONFIG /kaniko/.docker/
ENV DOCKER_CREDENTIAL_GCR_CONFIG /kaniko/.config/gcloud/docker_credential_gcr_config.json

在Dockerfile 路径执行 

docker build -t kaniko-tool:v1.17.0 .

出现以下显示,说明自定义镜像完成

用docker images命令可以自定义的镜像大小81.5MB,比shell-tool,基于alpine (7.34MB) 安装 wget,curl的40.5M,和kaniko 1.17.0的67.7M 加起来小

测试自定义镜像

可以直接用docker run,

或者把镜像推送到k8s的harbor后,在k8s用以下命令运行(这里推送到faas的仓库)

kubectl run -i -t --rm kaniko-tool --image=33.0.0.15:30012/faas/kaniko-tool:v1.17.0 --namespace=default
文章来自个人专栏
函数计算
9 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0