debian

Debian Jenkins如何实现容器化部署

小樊
35
2025-10-08 10:46:05
栏目: 智能运维

Debian系统下Jenkins容器化部署指南

一、前提条件

确保Debian系统已安装Docker(推荐使用docker-ce社区版),并具备root或sudo权限。Jenkins运行需Java环境,但官方镜像已内置OpenJDK,无需额外安装。

二、安装Docker(若未安装)

  1. 更新软件包索引并安装依赖:
    sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    
  2. 添加Docker官方GPG密钥:
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
    
  3. 添加Docker软件源:
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  4. 安装Docker并启动服务:
    sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker && sudo systemctl enable docker
    
  5. 验证Docker安装:
    sudo docker run hello-world
    

三、拉取Jenkins镜像

从Docker Hub获取官方LTS(长期支持)版本镜像(推荐生产环境使用):

docker pull jenkins/jenkins:lts

四、运行Jenkins容器

使用docker run命令启动容器,关键参数说明如下:

docker run -d \
  --name jenkins \                  # 容器名称(自定义)
  -p 8080:8080 \                    # 映射Jenkins Web界面端口
  -p 50000:50000 \                  # 映射Jenkins Agent通信端口
  -v jenkins_home:/var/jenkins_home \ # 数据卷持久化(存储配置、jobs等)
  -v /var/run/docker.sock:/var/run/docker.sock \ # 挂载Docker套接字(允许容器内调用宿主机Docker)
  jenkins/jenkins:lts

五、初始化Jenkins

  1. 获取初始管理员密码
    容器启动后,执行以下命令获取密码(用于首次解锁):
    docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
    
  2. 访问Web界面
    在浏览器中输入http://<Debian服务器IP>:8080,粘贴上述密码完成解锁。
  3. 完成初始配置
    • 选择“安装推荐插件”(或自定义选择Git、Docker、Pipeline等插件);
    • 创建管理员用户(设置用户名、密码及邮箱);
    • 配置系统设置(如时区、Jenkins URL等)。

六、后续配置与使用

  1. 安装必要插件
    进入“Manage Jenkins” → “Manage Plugins”,搜索并安装所需插件(如Git、Docker、Pipeline、Kubernetes等)。
  2. 配置全局工具
    在“Manage Jenkins” → “Global Tool Configuration”中,设置Git路径、JDK版本、Maven路径等工具(若未安装,可选择“自动安装”)。
  3. 创建Pipeline任务
    • 新建“Pipeline”类型任务,选择“Pipeline script from SCM”(从代码仓库读取Jenkinsfile);
    • 配置代码仓库(如GitHub、GitLab),指定分支及Jenkinsfile路径;
    • 示例Jenkinsfile(定义构建、测试、部署流程):
      pipeline {
        agent any
        stages {
          stage('Checkout') {
            steps { checkout scm } // 从仓库拉取代码
          }
          stage('Build') {
            steps { sh 'mvn clean package' } // Maven构建Java项目
          }
          stage('Test') {
            steps { sh 'mvn test' } // 运行单元测试
          }
          stage('Deploy') {
            steps { sh 'docker build -t my-app:${BUILD_NUMBER} .' && 
                    sh 'docker push my-app:${BUILD_NUMBER}' } // 构建并推送Docker镜像
          }
        }
      }
      
  4. 触发构建
    手动点击“Build Now”或配置Webhook(代码推送时自动触发)。

七、可选:使用Docker Compose管理容器

若需更灵活的配置(如多容器编排),可使用Docker Compose。创建docker-compose.yml文件:

version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
volumes:
  jenkins_home:

启动服务:

docker-compose up -d

注意事项

0
看了该问题的人还看了