温馨提示×

Linux中Jenkins如何与Docker集成

小樊
52
2025-07-11 07:54:25
栏目: 智能运维

在Linux中,Jenkins与Docker的集成可以通过以下步骤实现:

准备工作

  1. 安装Jenkins

    • 下载Jenkins安装包并按照指示进行安装。可以通过以下命令在Ubuntu上安装Jenkins:
      sudo apt update
      sudo apt install -y jenkins
      sudo systemctl start jenkins
      sudo systemctl enable jenkins
      
  2. 安装Docker

    • 确保Docker已安装并配置完成。可以通过以下命令在Ubuntu上安装Docker:
      sudo apt update
      sudo apt install -y docker.io
      sudo systemctl start docker
      sudo systemctl enable docker
      
  3. 配置Docker用户组

    • 将当前用户添加到Docker用户组,以便用户可以在不root的情况下运行Docker命令:
      sudo usermod -aG docker $USER
      
    • 执行上述命令后需要重新登录以生效。

集成步骤

  1. 拉取Jenkins Docker镜像

    • 使用以下命令拉取Jenkins的长期支持(LTS)版本镜像:
      docker pull jenkins/jenkins:lts
      
  2. 运行Jenkins容器

    • 使用以下命令运行Jenkins容器,并将Jenkins的数据目录映射到宿主机的目录中:
      docker run -d --name jenkins \
        -p 8080:8080 \
        -p 50000:50000 \
        -v /path/to/jenkins_home:/var/jenkins_home \
        -v /var/run/docker.sock:/var/run/docker.sock \
        jenkins/jenkins:lts
      
    • 替换/path/to/jenkins_home为您的宿主机目录,用于持久化Jenkins数据。
  3. 访问Jenkins

    • 打开浏览器,访问http://<服务器IP>:8080,您将看到Jenkins的欢迎页面。
  4. 解锁Jenkins

    • 首次访问Jenkins时,需要使用初始化密码解锁。可以通过查看容器的日志来获取这个密码:
      docker logs jenkins
      
    • 在日志的最后,您会看到一个以Please use the following password to proceed to installation开头的行,该行提供了解锁密码。
  5. 安装插件和配置

    • 使用解锁密码登录后,您可以安装推荐的插件,并进行必要的配置,如设置管理员账号和密码。
  6. 配置Docker插件

    • 在Jenkins中安装并配置Docker插件,确保Jenkins用户有权访问Docker守护进程。

使用Docker插件

  • 安装Docker插件

    • 登录到Jenkins服务器。
    • 在Jenkins主界面上,点击“管理Jenkins”。
    • 在“插件管理”部分,选择“可选插件”。
    • 在搜索框中输入“Docker”。
    • 选择“Docker”插件,并点击“安装插件”。
    • 等待插件安装完成。
  • 配置Docker插件

    • 在Jenkins主界面上,点击“管理Jenkins”。
    • 选择“系统管理”下的“Docker”。
    • 在“Docker服务器”部分,点击“添加新服务器”。
    • 输入Docker服务器的名称,选择Docker版本,并填写Docker服务器的URL。
    • 点击“保存”。

创建Jenkins Pipeline任务

  1. 编写Jenkinsfile

    • 在项目的根目录下创建一个名为Jenkinsfile的文件,内容如下:
      pipeline {
        agent any
        environment {
          REGISTRY = "registry.mycompany.com"
          IMAGE_NAME = "myapp"
          IMAGE_TAG = "v1.0.${BUILD_NUMBER}"
        }
        stages {
          stage('Checkout') {
            steps {
              checkout scm
            }
          }
          stage('Build Docker Image') {
            steps {
              sh """
              docker build -t ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} .
              """
            }
          }
          stage('Push to Registry') {
            steps {
              withCredentials([usernamePassword(credentialsId: 'docker-registry', usernameVariable: 'USER', passwordVariable: 'PASS')]) {
                sh """
                echo "$PASS" | docker login ${REGISTRY} -u "$USER" --password-stdin
                docker push ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}
                """
              }
            }
          }
          stage('Deploy') {
            steps {
              sh """
              docker pull ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}
              docker stop myapp || true
              docker rm myapp || true
              docker run -d --name myapp -p 8080:8080 ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}
              """
            }
          }
        }
      }
      
  2. 创建Jenkins任务

    • 在Jenkins的“新建任务”页面中选择“Pipeline”类型。
    • 在配置页面中,选择“Pipeline”部分,设置其使用的Jenkinsfile。
    • 在Jenkins首页点击“新建任务”。
    • 填入任务名称,选择“流水线”类型。
    • 在“流水线脚本”部分中,粘贴上述的Jenkinsfile,或者配置为从源代码管理(如Git)获取。

通过以上步骤,您可以在Linux中成功地将Jenkins与Docker集成,实现自动化构建、测试和部署流程。

0