如何设置 Jenkins Docker 环境

JenkinsJenkinsBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Jenkins 是一款被广泛采用的开源自动化服务器,在现代软件开发工作流程中发挥着关键作用。通过将 Jenkins 与 Docker 集成,你可以为持续集成和部署流程创建一个强大且可扩展的环境。本教程将指导你完成设置 Jenkins Docker 环境的步骤,从准备 Docker 环境到在容器内配置和使用 Jenkins。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL jenkins(("Jenkins")) -.-> jenkins/BlueOceanGroup(["Blue Ocean"]) jenkins(("Jenkins")) -.-> jenkins/InstallingJenkinsGroup(["Installing Jenkins"]) jenkins(("Jenkins")) -.-> jenkins/UsingJenkinsGroup(["Using Jenkins"]) jenkins(("Jenkins")) -.-> jenkins/PipelineGroup(["Pipeline"]) jenkins/InstallingJenkinsGroup -.-> jenkins/docker_installation("Use Docker Installation") jenkins/InstallingJenkinsGroup -.-> jenkins/war_files_installation("Use War files installation") jenkins/UsingJenkinsGroup -.-> jenkins/create_project("Create Project") jenkins/PipelineGroup -.-> jenkins/pipeline("Pipeline") jenkins/PipelineGroup -.-> jenkins/running_pipelines("Running Pipelines") jenkins/BlueOceanGroup -.-> jenkins/creating_a_pipeline("Creating a Pipeline") subgraph Lab Skills jenkins/docker_installation -.-> lab-414504{{"如何设置 Jenkins Docker 环境"}} jenkins/war_files_installation -.-> lab-414504{{"如何设置 Jenkins Docker 环境"}} jenkins/create_project -.-> lab-414504{{"如何设置 Jenkins Docker 环境"}} jenkins/pipeline -.-> lab-414504{{"如何设置 Jenkins Docker 环境"}} jenkins/running_pipelines -.-> lab-414504{{"如何设置 Jenkins Docker 环境"}} jenkins/creating_a_pipeline -.-> lab-414504{{"如何设置 Jenkins Docker 环境"}} end

了解 Jenkins 和 Docker

什么是 Jenkins?

Jenkins 是一个开源自动化服务器,有助于自动化软件开发过程。它被广泛用于构建、测试和部署应用程序。Jenkins 提供了一个灵活且可扩展的平台,使开发人员能够将各种工具和技术集成到他们的软件开发工作流程中。

什么是 Docker?

Docker 是一个开源平台,使开发人员能够在容器中构建、部署和运行应用程序。容器是轻量级、独立且可执行的软件包,其中包含运行应用程序所需的所有必要依赖项、库和配置文件。Docker 允许开发人员在不同环境中一致地创建、部署和管理这些容器。

为什么要将 Jenkins 与 Docker 一起使用?

将 Jenkins 与 Docker 集成可以带来以下几个好处:

  1. 一致的环境:Docker 容器可确保开发、测试和生产环境保持一致,降低出现 “在我的机器上能运行” 这类问题的风险。
  2. 可扩展性:Docker 容器可以轻松地扩展或缩减,使 Jenkins 能够在高峰时段处理增加的工作量。
  3. 可重复性:Docker 容器可以轻松复制,便于在不同环境中设置和管理 Jenkins 实例。
  4. 隔离性:Docker 容器提供高度隔离,确保每个 Jenkins 任务都在一个干净且隔离的环境中运行,防止不同项目或依赖项之间发生冲突。

用于 Jenkins 的 Docker 组件

要使用 Docker 设置 Jenkins 环境,你需要以下组件:

  1. Jenkins Docker 镜像:官方的 Jenkins Docker 镜像,它提供了一个预配置的 Jenkins 服务器。
  2. Docker 引擎:运行和管理 Jenkins Docker 容器的 Docker 运行时。
  3. Docker Compose(可选):一个用于定义和运行多容器 Docker 应用程序的工具,它可以简化 Jenkins 环境的设置和管理。
graph TD A[Jenkins Docker Image] --> B[Docker Engine] B --> C[Docker Compose]

在 Docker 中使用 Jenkins 的优势

在 Docker 环境中使用 Jenkins 有以下几个优势:

  1. 可移植性:Jenkins Docker 镜像可以轻松部署在任何支持 Docker 的系统上,具有很高的可移植性。
  2. 隔离性:每个 Jenkins 任务都在一个单独的 Docker 容器中运行,确保隔离并防止不同项目或依赖项之间发生冲突。
  3. 可扩展性:根据需要添加或删除 Docker 容器,Jenkins 可以轻松地扩展或缩减。
  4. 可重复性:Jenkins Docker 环境可以轻松复制,允许在不同环境中进行一致且可靠的部署。
  5. 简化管理:可以使用 Docker Compose 来定义和管理整个 Jenkins 环境,简化设置和维护过程。

为 Jenkins 准备 Docker 环境

安装 Docker

在 Docker 环境中设置 Jenkins 之前,你需要在系统上安装 Docker。以下是在 Ubuntu 22.04 上安装 Docker 的方法:

## 更新软件包索引
sudo apt-get update

## 安装允许 apt 通过 HTTPS 使用存储库的软件包
sudo apt-get install \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

## 添加 Docker 的官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

## 设置 Docker 存储库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## 安装 Docker 引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

验证 Docker 安装

安装 Docker 后,你可以通过运行以下命令来验证安装:

sudo docker run hello-world

此命令将下载一个测试镜像并运行一个容器,该容器应输出一条消息,确认 Docker 安装正确运行。

为 Jenkins 创建 Docker 网络

为确保 Jenkins 容器能够与其他容器通信(例如,用于构建和测试应用程序),你应为 Jenkins 创建一个专用的 Docker 网络。你可以使用以下命令来完成此操作:

sudo docker network create jenkins

这将创建一个名为 “jenkins” 的新 Docker 网络,你可以在运行 Jenkins 容器时使用它。

为 Jenkins 准备持久存储

Jenkins 需要持久存储来存储其配置、插件和构建工件。你可以创建一个 Docker 卷来提供此持久存储:

sudo docker volume create jenkins-data

这将创建一个名为 “jenkins-data” 的 Docker 卷,你可以在运行 Jenkins 容器时使用它。

配置 Docker 权限

为了允许 Jenkins 与 Docker 守护进程进行交互,你需要为 Jenkins 用户授予必要的权限。你可以通过将 Jenkins 用户添加到 “docker” 组来实现:

sudo usermod -aG docker jenkins

进行此更改后,你需要重启 Jenkins 服务以使更改生效。

在 Docker 中配置和使用 Jenkins

运行 Jenkins Docker 容器

完成必要的准备工作后,现在你可以运行 Jenkins Docker 容器了。使用以下命令启动 Jenkins 容器:

sudo docker run -d \
  --name jenkins \
  --restart=unless-stopped \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $(which docker):/usr/bin/docker \
  --network jenkins \
  LabEx/jenkins

此命令:

  • 以分离模式运行 Jenkins 容器(-d
  • 将容器命名为 “jenkins”
  • 除非手动停止,否则自动重启容器(--restart=unless-stopped
  • 将 Jenkins 网页用户界面端口(8080)和 Jenkins 代理端口(50000)映射到主机
  • 将 “jenkins-data” 卷挂载到容器内的 /var/jenkins_home 目录
  • 挂载 Docker 套接字和 Docker 二进制文件,以允许 Jenkins 与 Docker 守护进程进行交互
  • 将 Jenkins 容器连接到 “jenkins” Docker 网络

访问 Jenkins 网页用户界面

运行 Jenkins 容器后,你可以通过打开网页浏览器并导航到 http://localhost:8080 来访问 Jenkins 网页用户界面。你应该会看到 Jenkins 设置向导。

完成 Jenkins 设置

按照屏幕上的说明完成 Jenkins 设置过程:

  1. 通过输入初始管理员密码来解锁 Jenkins,该密码可以在容器日志或 “jenkins-data” 卷中找到。
  2. 安装建议的插件或选择你要安装的插件。
  3. 创建第一个管理员用户。
  4. 根据需要自定义 Jenkins URL 和其他设置。

将 Jenkins 与 Docker 集成

为了允许 Jenkins 与 Docker 进行交互,你需要配置 Jenkins Docker 插件。请按照以下步骤操作:

  1. 在 Jenkins 网页用户界面中安装 “Docker” 插件。
  2. 通过提供 Docker 主机 URL(例如,unix:///var/run/docker.sock)和 Docker API 版本来配置 Docker 插件。
  3. 通过在 Jenkins 任务中运行简单的 Docker 命令来测试 Docker 插件配置。

在 Docker 中使用 Jenkins

设置并配置好 Jenkins 后,现在你可以开始使用它来自动化你的软件开发过程了。一些常见的用例包括:

  • 在 Docker 容器中构建和测试你的应用程序代码
  • 将你的应用程序部署到 Docker 容器
  • 使用 Jenkins 插件与其他工具和服务(例如,版本控制系统、工件仓库)集成

通过利用 Docker 的强大功能,你可以确保一致且可重复的构建和部署环境,使基于 Jenkins 的工作流程更加可靠和可扩展。

总结

在本教程中,你已经学习了如何设置 Jenkins Docker 环境,从而简化你的持续集成和部署流程。通过利用 Docker 的强大功能,你可以创建一个可靠且可扩展的 Jenkins 设置,以适应不断发展的软件开发需求。借助本指南所学到的知识,你现在可以自信地在 Docker 容器内管理和维护你的 Jenkins 基础设施,确保高效且可靠的软件交付。