mirror of
http://junepve.top:3000/chicrobot/README.git
synced 2026-10-29 19:51:29 +08:00
更新 c15_docker部署jenkins.md
This commit is contained in:
1 parent
653f49f095
commit
fc13226452
1 file changed
+305
-1
+305
-1
@@ -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!
|
||||
```
|
||||
Reference in new issue
Block a user