使用 Docker 安装 Jenkins

JenkinsBeginner
立即练习

介绍

在本实验中,我们将探索如何使用 Docker 安装 Jenkins。Jenkins 是一个广泛用于持续集成和持续交付(CI/CD)流程的自动化服务器。通过本实验,你将获得使用 Docker 设置 Jenkins 的实践经验,为未来的 DevOps 项目打下坚实的基础。

对于初学者来说,理解 Docker 是一个允许你在称为容器的隔离环境中打包和运行应用程序的平台非常重要。这种隔离确保了你的应用程序在不同系统上的一致性。另一方面,Jenkins 是一个帮助自动化软件开发过程的工具,特别是代码的构建、测试和部署。

准备 Docker 环境

在这一步骤中,我们将确保 Docker 已正确安装并在系统上运行。Docker 对本实验至关重要,因为它允许我们在容器中运行 Jenkins,从而提供一个一致且隔离的环境。

首先,让我们验证 Docker 是否已安装并正在运行。打开终端并执行以下命令:

docker --version

Docker 版本命令输出

此命令应显示系统上安装的 Docker 版本。你应该会看到类似以下的输出:

Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3

如果你没有看到版本号,可能意味着 Docker 未安装或不在系统的 PATH 中。如果发生这种情况,请不要担心;我们稍后会解决。

接下来,让我们检查 Docker 守护进程是否正在运行:

sudo systemctl status docker

此命令用于检查 Docker 服务的状态。你应该会看到表明 Docker 服务处于活动状态(正在运行)的输出。它可能看起来像这样:

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-09-11 10:00:00 UTC; 2h 30min ago

如果 Docker 未运行,你将看到一条消息,表明服务处于非活动状态或失败。

拉取 Jenkins Docker 镜像

在这一步骤中,我们将从 Docker Hub 下载官方的 Jenkins Docker 镜像。Docker Hub 是一个基于云的存储库,用于存储和共享 Docker 镜像。

要拉取最新的 LTS(长期支持)版本的 Jenkins,请运行以下命令:

docker pull jenkins/jenkins:lts

让我们分解一下这个命令:

  • docker pull 告诉 Docker 下载一个镜像
  • jenkins/jenkins 是镜像的名称(由 Jenkins 项目创建)
  • :lts 是一个标签,指定我们需要长期支持版本,该版本通常更稳定

此命令将 Jenkins 镜像下载到你的本地机器。下载可能需要几分钟,具体取决于你的网络速度。你将看到进度条,指示组成镜像的各个层的下载状态。

下载完成后,你可以通过运行以下命令验证镜像是否已成功下载到本地:

docker images

此命令列出系统上的所有 Docker 镜像。你应该会在输出中看到 Jenkins 镜像,类似于以下内容:

REPOSITORY         TAG       IMAGE ID       CREATED        SIZE
jenkins/jenkins    lts       7a7add0bf3da   8 days ago     470MB

如果你没有看到 Jenkins 镜像,可能意味着下载失败。在这种情况下,请尝试再次运行 docker pull 命令。如果问题仍然存在,请检查你的网络连接或尝试使用其他网络。

创建用于 Jenkins 数据的 Docker 卷

在这一步骤中,我们将创建一个 Docker 卷来持久化存储 Jenkins 数据。这是维护 Jenkins 配置和构建历史的关键步骤。

Docker 卷提供了一种持久化存储由 Docker 容器生成和使用的数据的方式。这对于 Jenkins 尤为重要,因为我们希望即使容器停止或删除,也能保留配置、任务数据和构建产物。

通过运行以下命令创建一个名为 jenkins-data 的新卷:

docker volume create jenkins-data

此命令告诉 Docker 创建一个新卷。Docker 会管理这些卷,并将它们存储在主机文件系统的某个部分。

你可以通过列出所有 Docker 卷来验证卷是否已成功创建:

docker volume ls

你应该会在卷列表中看到 jenkins-data,如下所示:

DRIVER    VOLUME NAME
local     jenkins-data

如果你没有看到该卷,请尝试再次创建。如果问题仍然存在,请确保你具有创建 Docker 卷的必要权限(如果你的用户不在 docker 组中,可能需要使用 sudo)。

理解 Docker 卷的重要性在于:

  1. 它们允许数据在容器的生命周期之外持久化。
  2. 它们可以轻松备份和恢复。
  3. 如果需要,它们可以在容器之间共享。

运行 Jenkins Docker 容器

现在我们已经有了 Jenkins 镜像和一个用于数据持久化的卷,接下来可以运行 Jenkins 容器了。这一步骤将实际启动 Jenkins 并将其运行在 Docker 容器中,使其可以在你的系统上访问。

我们将使用以下配置运行容器:

  • 将容器端口 8080 映射到主机端口 8080(用于 Web 界面)
  • 将容器端口 50000 映射到主机端口 50000(用于代理连接)
  • jenkins-data 卷挂载到容器中的 /var/jenkins_home
  • 以分离模式(detached mode)运行容器

执行以下命令以运行 Jenkins 容器:

docker run -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home --name jenkins-lts jenkins/jenkins:lts

让我们分解一下这个命令:

  • docker run 创建并运行一个新容器
  • -d 以分离模式(后台运行)运行容器
  • -p 8080:8080 将容器中的端口 8080 映射到主机的端口 8080
  • -p 50000:50000 将容器中的端口 50000 映射到主机的端口 50000
  • -v jenkins-data:/var/jenkins_home 将我们的 Docker 卷挂载到容器中的 Jenkins 主目录
  • --name jenkins-lts 为容器命名以便于引用
  • jenkins/jenkins:lts 指定要使用的镜像

运行此命令后,Docker 将在后台启动 Jenkins 容器。你可以通过执行以下命令验证容器是否正在运行:

docker ps

此命令列出所有正在运行的 Docker 容器。你应该会在输出中看到 Jenkins 容器,类似于以下内容:

CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                                                                      NAMES
747b6dc7b1af   jenkins/jenkins:lts   "/usr/bin/tini -- /u…"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   jenkins-lts

如果你没有看到 Jenkins 容器,可能启动失败了。你可以使用以下命令检查错误信息:

docker logs jenkins-lts

这将显示容器的日志,有助于诊断问题。

访问 Jenkins Web 界面

Jenkins 容器现在正在运行,我们可以访问其 Web 界面来完成初始设置。此步骤将指导你访问 Jenkins 并执行初始配置。

有两种方法可以访问 Jenkins Web 界面:

  1. 点击虚拟环境中顶部标签页上的 + 符号,创建一个新的 Web Service,并输入端口 8080

    Creating Jenkins web service tab

    此方法在 Lab 环境中有效,它会创建一个新标签页来显示 Jenkins 界面。

  2. 在 VNC 桌面中打开 Firefox 浏览器。浏览器会自动打开到 http://localhost:8080,因此你无需手动输入 URL。

    Firefox Jenkins access page

你应该会看到 Jenkins 的“解锁 Jenkins”(Unlock Jenkins)页面。此安全措施确保只有授权用户才能设置 Jenkins。

对于此 Lab 环境,默认的用户名是 admin,密码也是 admin

在“解锁 Jenkins”页面输入这些凭据,然后点击“继续”(Continue)。

Jenkins unlock page credentials

解锁 Jenkins 后,系统将引导你完成初始设置过程,包括安装插件和创建管理员用户。对于此 Lab,你可以选择“安装推荐的插件”(Install suggested plugins)选项以快速开始。

总结

在本实验中,我们成功地使用 Docker 安装并设置了 Jenkins。我们涵盖了关键步骤,包括准备 Docker 环境、拉取 Jenkins 镜像、为 Jenkins 数据创建持久化卷、运行 Jenkins 容器以及访问 Jenkins Web 界面以完成初始设置。

这次实践为你提供了使用 Docker 部署 Jenkins 的坚实基础,这是现代 DevOps 实践中的一项关键技能。现在,你可以进一步探索 Jenkins,创建构建任务,并将其集成到你的开发工作流程中。