更新 c15_docker部署jenkins.md

This commit is contained in:
chicrobot committed 2026-01-29 11:49:45 +08:00
1 parent 653f49f095
commit fc13226452
1 file changed
+305 -1
+305 -1
View File
@@ -6,4 +6,308 @@ docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:2
docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/jenkins:2.546-jdk21
```
## 启动镜像
### 创建目录
### 创建网络
```
docker network create jenkins
```
### 创建容器
```
docker run --name jenkins --detach \
--privileged --network jenkins --network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume ~/data/jenkins/jenkins-docker-certs:/certs/client \
--volume ~/data/jenkins/jenkins-data:/var/jenkins_home \
--publish 2376:2376 \
docker:dind --storage-driver overlay2
```
官方文档:`https://www.jenkins.io/doc/book/installing/docker/`
```
Docker
目录
安装Docker
前提条件
在 Docker 中下载和运行 Jenkins
在macOS和Linux上
在Windows上
访问 Docker 容器
访问Docker日志
访问Jenkins主目录
安装后安装向导
解锁詹金斯
用插件定制Jenkins
创建第一个管理员用户
Docker 是一个用于在被称为“容器”(或 Docker 容器)的隔离环境中运行应用程序的平台。 像 Jenkins 这样的应用程序可以作为只读“镜像”(或 Docker 镜像)下载,每个镜像都可以作为容器在 Docker 中运行。 Docker 容器是 Docker 镜像的“运行实例”。 Docker 镜像是永久存储的,只有在发布新版本时才会更新,而容器本质上是临时的。 在 Docker 文档中的《入门第一部分:导向与设置》中了解更多这些概念。
由于 Docker 的基本平台和容器设计,对于某个应用程序(如 Jenkins)的 Docker 镜像,可以运行在任何支持的作系统或云服务上运行 Docker。 支持的作系统包括macOS、Linux和Windows,支持的云服务包括AWS和Azure。
安装Docker
要在您的作系统上安装Docker,请按照导览前置条件中的说明作。
或者,访问 Docker Hub,选择适合你作系统或云服务的 Docker 社区版。 请按照他们网站上提供的安装说明作。
如果你是在基于Linux的作系统上安装Docker,确保Docker配置为可以作为非root用户管理。 可以查看 Docker 文档中的 Linux 安装后步骤页面,了解更多相关内容。 本页面还包含配置 Docker 启动时自动启动的说明。
前提条件
最低硬件需求:
256 MB 内存
1 GB 硬盘空间(虽然运行时建议至少 10 GB Jenkins 作为 Docker 容器)
推荐给小团队的硬件配置:
4 GB+ 内存
50 GB+ 硬盘空间
全面的硬件推荐:
硬件:详见硬件推荐页面
软件需求:
Java 21及更高版本:详见Java需求页面
网页浏览器:详见网页浏览器兼容性页面
对于Windows作系统:Windows支持策略
针对Linux作系统:Linux支持政策
对于 servlet 容器:Servlet 容器支持政策
在 Docker 中下载和运行 Jenkins
Jenkins 有多个 Docker 镜像可供使用。
请使用Docker Hub仓库推荐的官方jenkins/jenkins镜像。 本镜像包含当前的 Jenkins 长期支持(LTS)版本,已具备生产准备。 然而,该镜像不包含 Docker CLI,也未与常用的 Blue Ocean 插件及其功能捆绑销售。 要充分利用 Jenkins 和 Docker 的全部功能,你可能需要按照下面描述的安装流程进行。
每当 Jenkins Docker 新版本可用时,都会发布一个新的镜像。 你可以在标签页查看该图片之前发布版本的列表。jenkins/jenkinsjenkins/jenkins
在macOS和Linux上
打开终端窗口。
在 Docker 中使用以下 docker network create 命令创建桥接网络:
docker network create jenkins
为了在 Jenkins 节点内执行 Docker 命令,请使用以下 docker run 命令下载并运行 Docker 镜像:docker:dind
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
( 可选 :)指定用于运行镜像的 Docker 容器名称。 默认情况下,Docker 会为容器生成唯一的名称。
( 可选 :)关闭时会自动移除 Docker 容器(Docker 镜像的副本)。
( 可选 :)后台运行 Docker 容器。 你可以通过运行 来停止这个过程。docker stop jenkins-docker
目前在 Docker 中运行 Docker 需要特权访问才能正常运行。 这一要求可能会在更新的 Linux 内核版本中有所放宽。
这对应于前一步创建的网络。
它使 Docker 容器中的 Docker 作为网络内的主机名可用。dockerjenkins
使 Docker 服务器能够使用 TLS。 由于使用特权容器,建议这样做,但需要使用下文描述的共享卷。 该环境变量控制管理 Docker TLS 证书的根目录。
将容器内的目录映射到上述创建的 Docker 卷。/certs/clientjenkins-docker-certs
将容器内的目录映射到名为 的 Docker 卷。 这使得由该 Docker 容器的 Docker 守护进程控制的其他 Docker 容器能够挂载 Jenkins 的数据。/var/jenkins_homejenkins-data
( 可选 :)它会暴露主机上的 Docker 守护进程端口。 这对于在主机上执行命令以控制内部的 Docker 守护进程非常有用。docker
图片本身。 运行前使用命令下载此图: 。docker:dinddocker image pull docker:dind
Docker 卷的存储驱动。 请参阅 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
通过执行以下两个步骤,定制官方的 Jenkins Docker 镜像:
创建一个包含以下内容的 Dockerfile :
FROM jenkins/jenkins:2.541.1-jdk21
USER root
RUN apt-get update && apt-get install -y lsb-release ca-certificates curl && \
install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \
chmod a+r /etc/apt/keyrings/docker.asc && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt-get update && apt-get install -y docker-ce-cli && \
apt-get clean && rm -rf /var/lib/apt/lists/*
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow json-path-api"
从这个 Docker 文件构建一个新的 Docker 镜像,并为镜像赋予一个有意义的名称,比如“myjenkins-blueocean:2.541.1-1”:
docker build -t myjenkins-blueocean:2.541.1-1 .
如果你还没有下载官方的 Jenkins Docker 镜像,上述流程会自动帮你下载。
在 Docker 中使用以下 docker run 命令,将你自己的镜像作为容器运行:myjenkins-blueocean:2.541.1-1
docker run \
--name jenkins-blueocean \
--restart=on-failure \
--detach \
--network jenkins \
--env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client \
--env DOCKER_TLS_VERIFY=1 \
--publish 8080:8080 \
--publish 50000:50000 \
--volume jenkins-data:/var/jenkins_home \
--volume jenkins-docker-certs:/certs/client:ro \
myjenkins-blueocean:2.541.1-1
( 可选 :)指定该 Docker 镜像实例的 Docker 容器名称。
如果容器停止,务必重启。如果是手动停止的,只有在 Docker 守护进程重启或容器本身手动重启时才会重启。
( 可选 :)在后台运行当前容器,称为“分离”模式,并输出容器ID。如果你没有指定这个选项,那么该容器的运行中的Docker日志会显示在终端窗口中。
将该容器连接到之前定义的网络。Docker 守护进程现在可以通过主机名 .jenkinsdocker
指定了 、 及其他 Docker 工具用于连接前一步 Docker 守护进程的环境变量。dockerdocker-compose
映射或发布当前容器的8080端口到主机上的8080端口。第一个数字代表主机上的端口,最后一个代表容器的端口。例如,要通过端口49000访问主机上的Jenkins,输入该选项。-p 49000:8080
( 可选 :)将当前容器的50000端口映射到主机上的50000端口。只有在你在其他机器上设置了一个或多个入站Jenkins代理,这些代理与你的容器(称为Jenkins“控制器”)交互时才需要这样做。入站Jenkins代理默认通过TCP端口50000与Jenkins控制器通信。你可以通过安全页面更改Jenkins控制器上的端口号。例如,如果你将Jenkins控制器入站Jenkins代理的TCP端口更新为51000,你需要通过该命令重新运行Jenkins。例如,将“发布”选项指定为:第一个值是托管 Jenkins 控制器机器的端口号,最后一个值与 Jenkins 控制器上更改后的值相匹配,例如。入站的 Jenkins 代理与该端口上的 Jenkins 控制器通信(本例为 52000)。注意 WebSocket 代理不需要此配置。jenkins-blueoceandocker run …​--publish 52000:51000
将容器中的目录映射到 Docker 卷,名为 。 你也可以把这个目录映射到你机器本地文件系统的某个卷,而不是把目录映射到 Docker 卷。 例如,指定将容器目录映射到本地机器中该目录中的子目录的选项——通常为 或 。 注意:如果你更改了源卷或目录,上面容器的卷也需要更新以匹配。/var/jenkins_homejenkins-data/var/jenkins_home--volume $HOME/jenkins:/var/jenkins_home/var/jenkins_homejenkins$HOME/Users/<your-username>/jenkins/home/<your-username>/jenkinsdocker:dind
将目录映射到之前创建的卷。连接 Docker 守护进程所需的客户端 TLS 证书现在可以在环境变量指定的路径中获得。/certs/clientjenkins-docker-certsDOCKER_CERT_PATH
你在上一步构建的Docker镜像名称。
如果你在复制粘贴命令片段时遇到困难,请使用下面无注释版本:
docker run --name jenkins-blueocean --restart=on-failure --detach \
--network jenkins --env DOCKER_HOST=tcp://docker:2376 \
--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \
--publish 8080:8080 --publish 50000:50000 \
--volume jenkins-data:/var/jenkins_home \
--volume jenkins-docker-certs:/certs/client:ro \
myjenkins-blueocean:2.541.1-1
进入安装后安装向导。
在Windows上
Jenkins 项目提供的是 Linux 容器镜像,而不是 Windows 容器镜像。 确保你的 Docker for Windows 安装设置为运行,而不是 。 请参阅 Docker 文档,了解如何切换到 Linux 容器。 一旦配置为运行,步骤如下:Linux ContainersWindows ContainersLinux Containers
打开命令提示符窗口,类似于上面macOS和Linux的作步骤:
在 Docker 中创建一个桥接网络
docker network create jenkins
运行 docker:dind Docker image
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
通过执行以下两个步骤,定制官方的 Jenkins Docker 镜像:
创建一个包含以下内容的 Dockerfile :
FROM jenkins/jenkins:2.541.1-jdk21
USER root
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow json-path-api"
从这个 Dockerfile 构建一个新的 Docker 镜像,并为该镜像赋予一个有意义的名称,例如 “myjenkins-blueocean:2.541.1-1”:
docker build -t myjenkins-blueocean:2.541.1-1 .
如果你还没有下载官方的 Jenkins Docker 镜像,上述流程会自动帮你下载。
在 Docker 中使用以下 docker run 命令,将你自己的镜像作为容器运行:myjenkins-blueocean:2.541.1-1
docker run --name jenkins-blueocean --restart=on-failure --detach ^
--network jenkins --env DOCKER_HOST=tcp://docker:2376 ^
--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 ^
--volume jenkins-data:/var/jenkins_home ^
--volume jenkins-docker-certs:/certs/client:ro ^
--publish 8080:8080 --publish 50000:50000 myjenkins-blueocean:2.541.1-1
进入设置向导。
访问 Docker 容器
如果你想通过 docker exec 命令通过终端/命令提示符访问你的 Docker 容器,可以在命令中添加类似选项。 这样可以访问名为“jenkins-tutorial”的 Jenkins Docker 容器。--name jenkins-tutorialdocker exec
你可以通过另一个终端/命令提示符窗口访问你的 Docker 容器,使用类似这样的命令:docker exec
docker exec -it jenkins-blueocean bash
访问Docker日志
例如,在安装后设置向导中解锁Jenkins时,你可能想访问Jenkins控制台日志。
通过你执行该命令的终端/命令提示符窗口访问 Jenkins 控制台日志。 或者,你也可以通过容器的 Docker 日志访问 Jenkins 控制台日志,使用以下命令:docker run …​
docker logs <docker-container-name>
你的武器可以通过命令获得。<docker-container-name>docker ps
访问Jenkins主目录
你可以访问 Jenkins 的主目录,查看子目录中 Jenkins 构建的详细信息。workspace
例如,如果你将 Jenkins 的主目录()映射到你机器本地文件系统的某个目录,比如在上面的命令中,可以通过你机器的常用终端/命令提示符访问目录内容。/var/jenkins_homedocker run …​
如果你在命令中指定了选项,可以通过容器的终端/命令提示符,使用 docker container exec 命令访问 Jenkins 主目录的内容:--volume jenkins-data:/var/jenkins_homedocker run …​
docker container exec -it <docker-container-name> bash
如前一节所述,使用docker容器ls命令。 如果你在上面命令中指定了选项(如有需要,请参考访问 Jenkins/Blue Ocean Docker 容器),请使用以下命令:<docker-container-name>--name jenkins-blueoceandocker container run …​docker container exec
docker container exec -it jenkins-blueocean bash
安装后安装向导
下载、安装并使用其中一个步骤运行Jenkins后 上图(除使用 Jenkins Operator 安装时外),安装后安装向导开始。
设置向导会带你完成几个快速一次性步骤,解锁Jenkins,用插件自定义,并创建第一个管理员用户 通过这些渠道,你可以继续访问詹金斯。
解锁詹金斯
当你第一次使用新的Jenkins手柄时,系统会要求你用以下方式解锁它 一个自动生成的密码。
浏览到(或者你配置的端口) 安装时使用Jenkins),然后等待解锁Jenkins页面。http://localhost:8080
解锁詹金斯页面
从Jenkins控制台的日志输出中复制自动生成的 字母数字密码(夹在两组星号之间)。
复制初始管理员密码
注:
命令:会在控制台打印密码。sudo cat /var/lib/jenkins/secrets/initialAdminPassword
如果你在Docker里用官方镜像运行Jenkins,你可以在控制台里打印密码,而不必在容器内打开交互壳。jenkins/jenkinssudo docker exec ${CONTAINER_ID or CONTAINER_NAME} cat /var/jenkins_home/secrets/initialAdminPassword
在解锁Jenkins页面,将此密码粘贴到管理员页面 密码字段,点击继续。
注:
Jenkins 控制台日志显示了位置(在 Jenkins 主目录中) 该密码也可获得。该密码必须输入 在你能访问Jenkins主线之前,先在新安装的Jenkins上设置向导 UI。这个密码同时也是管理员账户的默认密码 (用户名“admin”)如果你跳过了后续的用户创建 进入设置向导。
用插件定制Jenkins
解锁詹金斯后,自定义詹金斯页面 出现了。在这里你可以安装各种有用的插件,作为你 初步设置。
点击显示的两个选项之一:
安装推荐插件——安装推荐的插件集,这些插件 基于最常见的用例。
选择要安装的插件——以选择最初要安装的插件集合 安装。当你第一次进入插件选择页面时,建议 插件默认选择。
如果你不确定需要哪些插件,可以选择“建议安装” 插件。 你可以之后安装或移除更多Jenkins插件 通过 Jenkins 中的 Manage Jenkins > 插件页面。
设置向导显示了Jenkins的配置进程和你的 正在安装部分Jenkins插件。这个过程可能需要一些时间 几分钟后完成。
创建第一个管理员用户
最后,在给Jenkins定制后, 插件,Jenkins 要求你创建第一个管理员用户。
当“创建第一管理员用户”页面出现时,请指定您的详细信息 在相应字段中选择管理员用户,点击保存并完成。
当Jenkins准备好页面出现时,点击“开始使用Jenkins”。
注释:
本页可能会显示詹金斯几乎准备好了!如果是这样,请点击重新开始。
如果页面一分钟后不自动刷新,请使用网页 浏览器手动刷新页面。
如有需要,请使用您刚用的使用者凭证登录Jenkins 创建后你已经准备好开始使用 Jenkins!
```