如何在系统启动时为 Jenkins 启用 Docker 自动启动

JenkinsJenkinsBeginner
立即练习

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

简介

本教程将指导你完成配置 Docker 以在系统启动时自动启动的过程,从而实现与你的 Jenkins 持续集成和部署工作流程的无缝集成。通过确保 Docker 始终可用,你可以简化开发流程并保持 Jenkins 操作的可靠性。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL jenkins(("Jenkins")) -.-> jenkins/PipelineGroup(["Pipeline"]) jenkins(("Jenkins")) -.-> jenkins/BlueOceanGroup(["Blue Ocean"]) jenkins(("Jenkins")) -.-> jenkins/InstallingJenkinsGroup(["Installing Jenkins"]) jenkins/InstallingJenkinsGroup -.-> jenkins/docker_installation("Use Docker Installation") jenkins/InstallingJenkinsGroup -.-> jenkins/war_files_installation("Use War files installation") 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-415668{{"如何在系统启动时为 Jenkins 启用 Docker 自动启动"}} jenkins/war_files_installation -.-> lab-415668{{"如何在系统启动时为 Jenkins 启用 Docker 自动启动"}} jenkins/pipeline -.-> lab-415668{{"如何在系统启动时为 Jenkins 启用 Docker 自动启动"}} jenkins/running_pipelines -.-> lab-415668{{"如何在系统启动时为 Jenkins 启用 Docker 自动启动"}} jenkins/creating_a_pipeline -.-> lab-415668{{"如何在系统启动时为 Jenkins 启用 Docker 自动启动"}} end

Docker 与 Jenkins 简介

Docker 是一个广受欢迎的开源平台,它使开发者能够在容器化环境中构建、部署和运行应用程序。它提供了一种一致且可靠的方式来打包和分发软件,从而更轻松地在不同环境中管理和扩展应用程序。

另一方面,Jenkins 是一个广泛使用的开源自动化服务器,它帮助开发者自动化软件开发生命周期的各个方面,例如构建、测试和部署应用程序。

Docker 基础

Docker 使用客户端 - 服务器架构,其中 Docker 客户端与 Docker 守护进程(服务器)通信以执行命令和管理容器。Docker 容器是轻量级、独立且可执行的软件包,其中包含运行应用程序所需的一切,包括代码、运行时环境、系统工具和库。

Jenkins 基础

Jenkins 是一个强大的工具,可帮助自动化软件开发过程。它可用于构建、测试和部署应用程序,以及管理各种其他任务,如代码分析、工件管理和部署到生产环境。

集成 Docker 和 Jenkins

通过将 Docker 与 Jenkins 集成,开发者可以利用这两种技术的优势。Jenkins 可用于构建、测试和部署基于 Docker 的应用程序,而 Docker 可用于为运行这些应用程序创建一致且可重现的环境。

graph TD A[开发者] --> B[Jenkins] B --> C[Docker] C --> D[应用程序]

表 1:Docker 和 Jenkins 的关键特性

特性 Docker Jenkins
容器化 -
自动构建
自动测试
自动部署
可扩展性
灵活性

通过了解 Docker 和 Jenkins 的基础知识,开发者可以利用这两种技术的强大功能来简化他们的软件开发和部署流程。

在系统启动时配置 Docker 自动启动

为确保 Docker 守护进程在系统启动时自动启动,你可以按以下步骤进行配置:

步骤 1:创建一个 systemd 服务文件

通过运行以下命令为 Docker 创建一个新的 systemd 服务文件:

sudo nano /etc/systemd/system/docker.service

将以下内容添加到该文件中:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd://
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

[Install]
WantedBy=multi-user.target

步骤 2:重新加载 systemd 守护进程

创建服务文件后,重新加载 systemd 守护进程以使更改生效:

sudo systemctl daemon-reload

步骤 3:启用并启动 Docker 服务

启用 Docker 服务以在系统启动时自动启动,然后启动该服务:

sudo systemctl enable docker.service
sudo systemctl start docker.service

你可以使用以下命令验证 Docker 服务的状态:

sudo systemctl status docker.service

输出应显示 Docker 服务正在运行并已启用在系统启动时启动。

graph TD A[系统启动] --> B[systemd] B --> C[Docker 服务] C --> D[Docker 守护进程] D --> E[Docker 容器]

通过配置 Docker 在系统启动时自动启动,你可以确保基于 Docker 的应用程序始终可用并随时可以使用,即使在系统重启或停电之后也是如此。

将 Jenkins 与自动启动的 Docker 集成

要将 Jenkins 与自动启动的 Docker 守护进程集成,你可以遵循以下步骤:

步骤 1:安装 Jenkins

首先,你需要在系统上安装 Jenkins。你可以按照适用于你的操作系统(在这种情况下是 Ubuntu 22.04)的官方 Jenkins 安装指南进行操作。

步骤 2:配置 Jenkins 以使用 Docker 守护进程

安装 Jenkins 后,你需要配置它以使用 Docker 守护进程。请执行以下步骤:

  1. 登录到 Jenkins 网页界面。
  2. 转到“管理 Jenkins”>“配置系统”。
  3. 向下滚动到“云”部分,然后点击“添加新云”>“Docker”。
  4. 在“Docker URL”字段中,输入 Docker 守护进程的 URL,在这种情况下是 unix:///var/run/docker.sock
  5. 点击“测试连接”以验证 Jenkins 是否可以与 Docker 守护进程通信。
  6. 根据需要配置任何其他设置,例如 Docker 镜像选项,然后保存更改。

步骤 3:使用 Docker 创建 Jenkins 管道

既然 Jenkins 已配置为使用自动启动的 Docker 守护进程,你就可以创建一个利用 Docker 的 Jenkins 管道。以下是一个示例管道:

pipeline {
    agent {
        docker {
            image 'ubuntu:22.04'
            args '-v /var/run/docker.sock:/var/run/docker.sock'
        }
    }
    stages {
        stage('构建') {
            steps {
                sh 'docker build -t my-app.'
            }
        }
        stage('测试') {
            steps {
                sh 'docker run my-app pytest'
            }
        }
        stage('部署') {
            steps {
                sh 'docker push my-app:latest'
            }
        }
    }
}

在此示例中,管道使用 ubuntu:22.04 Docker 镜像作为代理,并且 args 参数将 Docker 套接字挂载到容器,从而允许管道与自动启动的 Docker 守护进程进行交互。

通过将 Jenkins 与自动启动的 Docker 守护进程集成,你可以创建强大且可靠的持续集成/持续部署(CI/CD)管道,利用这两种技术的优势,确保你的应用程序能够一致且高效地进行构建、测试和部署。

总结

在本教程中,你已经学习了如何在系统启动时启用 Docker 自动启动,以便与你的 Jenkins 持续集成和部署工作流程无缝集成。通过自动化 Docker 启动过程,你可以确保拥有一个可靠且高效的 Jenkins 环境,使你能够专注于开发任务,而无需担心底层基础设施。