打开网站,搜索 Jenkins,Jenkins 官网,发现 ERR_CONNECTION_TIMED_OUT,准备关机睡觉~。如果你没有搜索到的话,可能你用的是“黑”度搜索。

image-01

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

image-02

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

image-03

选择对应版本和系统。

image-04

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

image-05

但是我偷偷告诉你地址,你就用吧,一用一个不吱声。

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 .
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐