安装的工具:docker、crictl、kubectl、helm、git、net-tools
创建docker镜像目录并下载常用的命令、生成客户端的配置文件到当前目录下
$ mkdir tools-image && cd tools-image/
#下载helm
$ wget https://get.helm.sh/helm-v3.11.0-linux-amd64.tar.gz && tar xzvf helm-v3.11.0-linux-amd64.tar.gz && mv linux-amd64/helm ./
# 下载kubectl
$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && chmod +x kubectl
# 下载crictl
$ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.26.0/crictl-v1.26.0-linux-amd64.tar.gz && tar xzvf crictl-v1.26.0-linux-amd64.tar.gz
# 复制当前机器的docker命令二进制到本地目录一份
$ cp /usr/bin/docker .
# 准备crictl的客户端配置文件
$ cat > ./crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: false
pull-image-on-create: true
EOF
新建Dockerfile文件内容
$ cat >Dockerfile<<EOF
# 基本镜像,ubuntu:20.04
FROM ubuntu:20.04
# 跳过时区选择(必须执行,否则后续构建镜像时会卡死到时区选择)
ENV DEBIAN_FRONTEND=noninteractive
# 编码格式
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
# 指定用户
USER root
# 复制本地下载的工具二进制到容器内
COPY ./crictl ./kubectl ./helm ./docker /usr/bin/
# 生成crictl的配置文件
COPY ./crictl.yaml /etc/crictl.yaml
# 切换到国内镜像源(镜像、容器内部的)、安装常用的软件、安装docker-cli
RUN set -x; apt-get update \
&& apt-get install -y sudo curl vim git net-tools tzdata \
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& rm -rf /var/lib/apt/lists/*
CMD ["sleep", "9999999"]
EOF
构建工具镜像
# 我这里构建成功后推送到我自己的dockerHub仓库中,你们也可以推送到自己的仓库中,或者后面使用时用我仓库中的镜像也可以
$ docker build -t putianhui/jenkins-tools:v1 .
镜像在使用时需要注意一下几点:
1、在使用helm、kubectl工具时,需要将Kubernetes的客户端配置文件挂载到容器的/root/.kube/config文件
2、在使用crictl工具时,需要将containerd的sock文件挂载到容器的/run/containerd/containerd.sock文件
3、在使用docker工具时,需要将docker的sock文件挂载到容器的/var/run/docker.sock
Content type
Image
Digest
sha256:6b1dde484…
Size
150.1 MB
Last updated
over 3 years ago
docker pull putianhui/jenkins-tools:v1