CI/CD 第一步:使用 Docker 容器化部署 Jenkins
·
打开网站,搜索 Jenkins,Jenkins 官网,发现 ERR_CONNECTION_TIMED_OUT,准备关机睡觉~。如果你没有搜索到的话,可能你用的是“黑”度搜索。

Jenkins 中文站 如果中文站也打不开的话,那你就可以看我这篇文章啦。

中文站的 LTS 会比官网低个小版本(中文站为 2.528.3 LTS),这里我们选择 Docker 部署,方便管理。

选择对应版本和系统。

发现镜像下不下来,接着睡觉。

但是我偷偷告诉你地址,你就用吧,一用一个不吱声。
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:2.555.3-lts-jdk21
ok,接下来准备安装。先创建 Jenkins 使用的 Docker 网络:
docker network create jenkins
官方 Docker-in-Docker 的思路大概是下面这样。这里把命令和说明拆开,避免代码块里混入大段文字。
docker run \
--name jenkins-docker \
--rm \
--detach \
--privileged \
--network jenkins \
--network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind \
--storage-driver overlay2
参数说明:
--name jenkins-docker:容器名称。--rm:关闭时自动删除容器,可选。--detach:后台运行容器。--privileged:Docker 中运行 Docker 通常需要特权访问。--network jenkins:指定 Docker 网络。--network-alias docker:让 Jenkins 网络内可以通过docker这个主机名访问 Docker 服务。--env DOCKER_TLS_CERTDIR=/certs:启用并指定 Docker TLS 证书目录。--volume jenkins-docker-certs:/certs/client:映射 Docker 客户端证书目录。--volume jenkins-data:/var/jenkins_home:映射 Jenkins 数据目录。--publish 2376:2376:暴露 Docker 守护进程端口,可选。docker:dind:Docker-in-Docker 镜像。--storage-driver overlay2:指定存储驱动。
让我摒弃一些没用的东西。
在宿主机上创建一个数据目录,用于存储 Jenkins 容器的数据:
mkdir /data/jenkins
如果按 Docker-in-Docker 的思路跑,命令大概长这样:
docker run \
--name jenkins-docker \
--privileged \
--network jenkins \
--env DOCKER_TLS_CERTDIR=/certs \
--volume /data/jenkins/jenkins-docker-certs:/certs/client \
--volume /data/jenkins/jenkins-data:/var/jenkins_home \
docker:dind
做完这步发现这他哥不是部署 Jenkins,是让它跑一个容器,让 Jenkins 在这个容器里再 docker run,我们这就不做了。
最终直接启动 Jenkins 容器:
docker run -d \
--name jenkins-docker \
--privileged \
--network jenkins \
--env DOCKER_CERT_PATH=/certs \
--env DOCKER_TLS_VERIFY=0 \
--publish 8080:8080 \
--publish 50000:50000 \
--volume /data/jenkins/jenkins-docker-certs:/certs/client \
--volume /data/jenkins/jenkins-data:/var/jenkins_home \
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:2.555.3-lts-jdk21
DOCKER_TLS_VERIFY 先不开了,整成 0。如果报权限问题,请执行下面命令,简单粗暴:
chmod -R 777 /data/jenkins/
执行下面命令查看初始密码:
docker exec -it jenkins-docker cat /var/jenkins_home/secrets/initialAdminPassword
之后输入 ip:8080 就可以访问了。
附:容器化使用 CA 证书
创建 Dockerfile
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:2.555.3-lts-jdk21
# Switch to root to modify truststore
USER root
# Copy your custom CA certificates
# 把你的 CA 证书放到 custom-certs 目录中
COPY custom-certs/*.crt /usr/local/share/ca-certificates/
# Import certificates into Java truststore
RUN for cert in /usr/local/share/ca-certificates/*.crt; do \
[ -f "$cert" ] || continue; \
alias="custom-$(basename "${cert%.*}")"; \
keytool -importcert -noprompt \
-keystore "${JAVA_HOME}/lib/security/cacerts" \
-storepass changeit \
-alias "$alias" \
-file "$cert"; \
done
# Switch back to jenkins user
USER jenkins
构建镜像:
docker build -t my-jenkins:lts-jdk21 .
更多推荐
所有评论(0)