上篇文章我们讲到如何制作可build镜像的基础容器,这篇文章将带大家如何基于此容器制作出独一无二的jenkins-agent。
老规矩 先表明宿主机配置,除啦操作系统其他都是最新的。
- debian:v10
- containerd:v1.7.0
- nerdctl:v1.3.0
- buildkit:v0.11.5
将容器制作成镜像
nerdctl commit 723e7a7cbe7c agent:v1
FROM debian:10
ARG AGENT_WORKDIR=/home/jenkins/agent
ARG VERSION=3107.v665000b_51092
ENV TZ=Etc/UTC
ENV LANG=C.UTF-8
USER root
# 配置下载源
RUN rm -rf /etc/apt/sources.list
COPY ./sources.list /etc/apt/sources.list
# 下载依赖
RUN mkdir -p /home/jenkins/agent && apt-get update && apt-get --yes --no-install-recommends install curl fontconfig ca-certificates git git-lfs less netbase openssh-client patch && apt-get clean && rm -rf /tmp/* /var/cache/* /usr/share/doc/* /usr/share/man/*
# 安装agent.jar slave.jar
ADD https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/3107.v665000b_51092/remoting-3107.v665000b_51092.jar /usr/share/jenkins/agent.jar
RUN chmod 0644 /usr/share/jenkins/agent.jar && ln -sf /usr/share/jenkins/agent.jar /usr/share/jenkins/slave.jar
# 配置JDK17
ENV JAVA_HOME=/opt/java/openjdk
COPY ./openjdk /opt/java/openjdk
# 设置环境变量
ENV PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN mkdir /home/jenkins/.jenkins && mkdir -p "${AGENT_WORKDIR}"
# 声明了匿名卷
VOLUME [/home/jenkins/.jenkins]
VOLUME [/home/jenkins/agent]
WORKDIR /home/jenkins
# 配置启动脚本
COPY ./jenkins-agent /usr/local/bin/jenkins-agent
RUN chmod +x /usr/local/bin/jenkins-agent && ln -s /usr/local/bin/jenkins-agent /usr/local/bin/jenkins-slave
# 安装 buildkit
ADD ./buildkit-v0.11.5.linux-amd64.tar.gz /usr/local/
ENTRYPOINT ["/usr/local/bin/jenkins-agent"]
制作镜像
nerdctl build -t jenkins-agent:v1.0.0 -f Dockerfile .
运行容器
nerdctl run \
-v /var/run/containerd/containerd.sock:/var/run/containerd/containerd.sock \
-v /var/lib/containerd:/var/lib/containerd \
-v /var/run/buildkit/buildkitd.sock:/var/run/buildkit/buildkitd.sock \
-v /usr/local/bin/nerdctl:/usr/local/bin/nerdctl \
-td jenkins-agent:v1.0.0 -workDir=/home/jenkins/agent
注意!此镜像没有jenkins用户,直接使用的root。
如果出现证书问题重新下载下插件就好
apt-get install -y ca-certificates