当前位置: 代码网 > it编程>开发工具>Docker > 【DevOps】Jenkins 集成Docker

【DevOps】Jenkins 集成Docker

2024年07月31日 Docker 我要评论
将 Docker 与 Jenkins 集成可以实现持续集成和持续交付 (CI/CD) 流程的自动化,提高开发效率和软件质量。本文介绍详细的集成步骤和错误处理

目录

1. 安装 docker 和 jenkins

2. 在 jenkins 中安装 docker 插件

3. 配置 docker 连接

4. 创建 jenkins pipeline

5. 示例 pipeline 脚本

6. 运行 jenkins job

7. 扩展功能

8、docker配置测试连接的时候报错处理


将 docker 与 jenkins 集成可以实现持续集成和持续交付 (ci/cd) 流程的自动化,提高开发效率和软件质量。以下是详细的集成步骤:

1. 安装 docker 和 jenkins

2. 在 jenkins 中安装 docker 插件

  • 进入 jenkins 管理界面,选择 "manage jenkins" -> "manage plugins"。
  • 在 "available" 标签页搜索 "docker pipeline" 和 "docker commons plugin" 插件,并进行安装。

3. 配置 docker 连接

  • 进入 jenkins 管理界面,选择 "manage jenkins" -> "configure system"。
  • 找到 "cloud" 部分,点击 "add a new cloud",选择 "docker"。
  • 配置 docker 主机的 url(例如:unix:///var/run/docker.sock)。
  • 测试连接是否成功。

  • 可以配置多个 docker 连接,例如用于开发、测试和生产环境。

4. 创建 jenkins pipeline

  • 创建一个新的 jenkins job,选择 "pipeline" 类型。
  • 在 pipeline 脚本中使用 docker 插件提供的步骤来构建和运行 docker 镜像。

5. 示例 pipeline 脚本

pipeline {
    agent {
        docker {
            image 'maven:3-alpine' 
            args '-v /root/.m2:/root/.m2' 
        }
    }
    stages {
        stage('build') {
            steps {
                sh 'mvn clean package' 
            }
        }
        stage('test') {
            steps {
                sh 'mvn test' 
            }
        }
        stage('deploy') {
            steps {
                sh 'docker build -t my-app . ' 
                sh 'docker run -d -p 8080:8080 my-app' 
            }
        }
    }
}

脚本解释:

  • agent: 指定 jenkins job 运行的环境,这里使用 docker 镜像 maven:3-alpine
  • args: 指定 docker 容器启动参数,这里将本地 maven 仓库挂载到容器中。
  • stages: 定义 pipeline 的不同阶段,例如构建、测试和部署。
  • steps: 每个阶段包含具体的执行步骤,例如使用 maven 构建项目、运行测试和构建 docker 镜像。

6. 运行 jenkins job

  • 保存 pipeline 脚本并运行 jenkins job。
  • jenkins 将会自动启动 docker 容器,并在容器内执行构建、测试和部署步骤。

7. 扩展功能

  • 可以使用 docker compose 运行多个容器的应用程序。
  • 可以使用 kubernetes 插件将应用程序部署到 kubernetes 集群。
  • 可以使用 jenkins shared libraries 来共享 pipeline 脚本和代码。

8、docker配置测试连接的时候报错处理

测试连接的时候报错了:java.io.ioexception: com.sun.jna.lasterrorexception: [13] permission denied 

这个错误通常表示 jenkins 没有足够的权限访问 docker 守护进程。要解决这个问题,你可以尝试以下几种方法:

  • 将 jenkins 用户添加到 docker 组:

    • 在终端中执行以下命令,将 jenkins 用户添加到 docker 组:
      sudo usermod -ag docker jenkins
      
    • 重启 jenkins 服务,使更改生效:
      sudo systemctl restart jenkins
      
  • 使用 sudo 运行 docker 命令:

    • 在 jenkins 系统配置页面(manage jenkins -> configure system),找到 docker 部分。
    • 在 "docker host uri" 字段中,将值更改为:unix:///var/run/docker.sock
    • 在 "connect method" 部分,选择 "connect with ssh"。
    • 配置 ssh 的详细信息,如主机名、用户名和认证方式。
    • 在 "prefix start command" 字段中,输入 sudo,这将使 jenkins 以 sudo 权限运行 docker 命令。
  • 修改 docker 守护进程的配置:

    • 编辑 docker 守护进程的配置文件(通常位于 /etc/docker/daemon.json),添加以下内容:
      {
        "group": "jenkins",
        "live-restore": true
      }
      
    • 重启 docker 守护进程,使更改生效:
      sudo systemctl restart docker
      
  • 使用 tcp 连接而不是 unix 套接字:

    • 编辑 docker 守护进程的配置文件(通常位于 /etc/docker/daemon.json),添加以下内容:
      {
        "hosts": ["tcp://0.0.0.0:2375"]
      }
      
    • 重启 docker 守护进程,使更改生效:
      sudo systemctl restart docker
      
    • 在 jenkins 的 docker 配置中,将 "docker host uri" 更改为:tcp://localhost:2375

请注意,上述方法可能会根据你的具体环境和安全要求而有所不同。在修改配置之前,请务必了解每个选项的安全隐患。

在进行任何更改后,请确保重启 jenkins 和 docker 守护进程,以使更改生效。然后,重新测试 jenkins 与 docker 的连接,确保问题已经解决。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com