【DevOps】Jenkins 集成Docker

Coder加油! 2024-06-20 11:37:10 阅读 81

目录

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

Docker 安装: 请根据您的操作系统选择合适的安装方法,并确保 Docker 守护进程正在运行。具体过程可以参考我的博文《【DevOps】Docker安装和使用示例》Jenkins 安装: 可以选择 war 包方式或使用 Docker 安装 Jenkins。具体可以参考我的博文《DevOps(四)在Ubuntu20.04和CentOS7安装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-alpineargs: 指定 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 的连接,确保问题已经解决。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。