Dockerize Jenkins:使用 Docker 容器在 Linux 上无缝部署 Jenkins (docker logs)
简介
Jenkins 是一个开源的持续集成和持续交付 (CI/CD) 工具,用于自动化软件开发中的各种任务。使用 Jenkins,可以轻松地构建、测试和部署代码,使其成为敏捷和 DevOps 环境中不可或缺的工具。
Docker 是一个容器化平台,用于构建、部署和运行应用程序。它提供了轻量级的可移植环境,使开发人员可以轻松地在不同环境中部署和运行他们的应用程序。本文将指导您如何在 Linux 上使用 Docker 容器部署 Jenkins。
先决条件
- Linux 操作系统
- Docker 已安装
- Jenkins CLI 工具(可选,用于与 Jenkins 交互)
步骤
1. 拉取 Jenkins 镜像
从 Docker Hub 拉取官方 Jenkins 镜像:
docker pull jenkins/jenkins:lts
2. 运行 Jenkins 容器
使用以下命令运行 Jenkins 容器,并将端口 8080 映射到主机:
docker run -d --name jenkins -p 8080:8080 jenkins/jenkins:lts
3. 访问 Jenkins Web 界面
在浏览器中访问以访问 Jenkins Web 界面。
4. 初始化 Jenkins
第一次访问 Web界面时,您将需要初始化 Jenkins。这包括安装必要的插件和配置管理员用户:
- 选择 "安装建议的插件"。
- 等待插件安装完成。
- 创建管理员用户,输入用户名、密码、电子邮件和全名。
- 点击 "保存并完成"。
5. 监视容器日志(可选)
要监视 Jenkins 容器日志,使用以下命令:
docker logs -f jenkins
使用 Jenkins CLI
您可以使用 Jenkins CLI 工具与 Jenkins 交互。要安装 Jenkins CLI,请按照以下步骤操作:
- 安装 Java。
- 下载 Jenkins CLI JAR 文件。
- 将 Jenkins CLI JAR 文件添加到系统路径中。
要使用 Jenkins CLI,请运行以下命令:
java -jar jenkins-cli.jar
结论
通过遵循本文中的步骤,您可以在 Linux 上使用 Docker 容器轻松部署 Jenkins。Docker 容器化使 Jenkins 的部署和维护变得更加容易,从而使您能够充分利用其在 CI/CD 管道中的强大功能。
在容器中运行 Jenkins pipeline 任务
持续集成中的 pipeline 技术和 docker 都是当前正在发展的主流方向,当然把它们结合起来在 CI/CD 过程中发挥出更强大的威力也是大家共同的目标。本文将介绍如何在 Jenkins pipeline 中集成使用 docker,好在当前的 Jenkins 已经默认通过插件实现了与 docker 的集成,所以这将是一段轻松愉快的旅程。
简单起见,我们使用一台安装了 docker 的 linux 虚机,并通过 ssh 将其启动为 Jenkins server 的 build agent。主要操作步骤如下:
我们通过下面的脚本一次搞定这些操作(docker 的安装请参考官方文档):
在 linux 虚机上执行上面的脚本,然后在 Jenkins 中添加 node(build agent):
其中的 Remote root directory 就是刚才创建的 /var/jenkins 目录。Launch method 选择 Launch slave agents via SSH。Host 为 linux 虚机的 IP,Credentials 则为刚才创建的 jenkins 用户。
先来运行一个简单的 demo。创建一个 pipeline 类型的 job,并输入下面的 pipeline script:
运行该任务,执行结果如下:
其中的命令 node --version 就是在容器中执行的。
Jenkins 默认会把任务分配给任何可用的 agent,如果我们要指定任务执行的 agent,可以在 docker 的配置中指定 label,这样该任务只会被分配到具有某个 label 的 agent 上运行:
我们还可以在 folder 级别指定 label,这样的设置会应用在 folder 内所有没有设置 label 的任务上:
除了 label,还可以设置 docker registry URL 及其身份认证的凭据。
我们还可以在不同的 stage 中运行不同的容器,其实就是每个 stage 用自己的容器镜像创建容器并执行任务,stage 之间没啥关系:
通过指定 Dockerfile 文件,在 build agent 上直接构建容器镜像,然后生成容器并执行命令。下面的 demo 中我们通过 Dockerfile 创建一个包含 curl 工具的容器镜像,然后通过该镜像启动容器并执行 HTTP 请求。该 demo 一共包含三个文件:Dockerfile 、 和 Jenkinsfile,大家可以直接从这里下载它们。先看一下 Dockerfile 文件的内容:
其中的 内容如下:
Jenkinsfile 的内容如下:
注意,该文件中我们设置了 dir 为 curl 目录,这是因为此项目的 Dockerfile 文件不是在代码库的根目录下,所以需要指定其相对目录的路径。
然后在 Jenkins 中创建 pipeline 类型的 job,并把 pipeline 的 Definition 设置为 Pipeline script from SCM 。接下来设置好代码仓库的路径就可以了。运行该任务,从日志上可以看到取完代码后先通过 Dockerifle 文件构建了容器镜像:
并在容器中运行了 curl命令。
上面的例子中我们通过 Dockerfile 生成了容器镜像,并且完成了相关的测试(通过 curl 请求了测试网页)。接下来就是把生成的容器镜像推送到镜像仓库中。下面将展示如何在 pipeline 中把构建的镜像推送的镜像仓库。首先在 Folder 的配置界面中添加访问 凭据如下:
如果是访问 dockerhub 就不需要填写 Docker registry URL。然后添加下面的 Pipeline script:
注意, 9e70c1eb-814c-4cf2-97e9-5bfc 刚才创建的凭据的 ID,可以从 folder 的 Credentials 界面中获得。运行这个任务,执行成功后去 上看一下,是不是已经把新构建的镜像推送上去了:
从本文的几个简单 demo 可以看出,jenkins pipeline 和 docker 集成的已经很好了。当然你还可以实现更多更复杂的用例,赶紧动手吧!
参考:
Using Docker with Pipeline
Pipeline Syntax
作者:sparkdev
Jenkins容器化部署
参数说明
Jenkins是一种主从架构,有一个master和多个slave,master负责提供界面、处理HTTP请求及管理构建环境,汇总构建结果;slave是一个在远程机器上运行的Java可执行文件,构建的执行则由Jenkins slave负责。(master也可以执行构建操作,默认executor数量为2个,表示能并行执行两个Job。)
• executor:执行器,是真正执行项目的单元。一个执行器可以被理解为一个单独的进程(事实上是线程)。在一个节点上可以运行多个执行器(添加节点的时候指定)。
• agent:代理,在概念上指的是相对于Jenkins master的一种角色,实际上是指运行在机器或容器中的一个程序,它会连接上Jenkins master,并执行Jenkins master分配给它的任务。
通过上面方法启动的容器,只要定时打包备份 /root/jenkins 目录就可以了。升级Jenkins版本时,直接使用该目录,使用新镜像重新启动容器就可以了。
通过 groovy脚本文件,重新打包镜像,可以修改executor的数量,如调整为5个。
Dockerfile
jenkins安装需要docker吗
首先告诉你,在docker里面运行jenkins是没问题的,当然使用docker也可以运行jenkins,最简单的方法就是把环境配置好后,把jenkins的war包放到tomcat里面运行。
若对本页面资源感兴趣,请点击下方或右方图片,注册登录后
搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源
如有其他疑问,请咨询右下角【在线客服】,谢谢支持!
相关文章
- 告别繁琐打字,开启输入新篇章!搜狗输入法电脑版,尽享打字乐趣! (告别繁琐打字怎么说)
- 智能打字,让输入变得更轻松!搜狗输入法电脑版,值得拥有! (智能打字软件下载)
- 解放双手,轻松驾驭输入世界!搜狗输入法电脑版,您的打字神器! (解放双手轻松带娃的好地方)
- 打字如飞,畅游文字王国!搜狗输入法电脑版不容错过! (打字飞快)
- 高效办公利器,搜狗输入法助您事半功倍! (高效办公利器有哪些)
- 告别枯燥打字,搜狗输入法赋予文字新活力! (告别枯燥打字图片)
- 立即下载搜狗输入法,体验极致打字享受! (下载 搜狗)
- 周易免费算命2021:深入你的内心,发现你的真正潜力 (周易免费算命测运势)
- 2021年周易免费在线算命:开启你的成功之路 (2021年周大福金价)
- 周易免费算命2021:为你指点迷津,趋吉避凶 (周易免费算命测运势)
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~