如何使用Systemd在Docker容器中运行Jenkins服务器


Jenkins是一款开源自动化服务器,旨在帮助软件开发人员构建,测试和部署应用程序,从而简化持续集成和交付过程。本文介绍了如何在docker容器中作为系统服务运行Jenkins。

重复的任务通常很乏味,最终会占用您大量的时间和精力。随着时间的流逝,已开发出多种自动化工具来帮助减轻执行重复性工作的麻烦。Jenkins就是这样一种自动化工具。Jenkins是一款开源自动化服务器,旨在帮助软件开发人员构建,测试和部署应用程序,从而简化持续集成和交付过程。我们之前写过一篇文章,介绍如何在CentOS 8 / RHEL 8上安装Jenkins。在本文中,我们将做一些不同的事情,并将Jenkins服务器作为系统服务在Docker容器中运行。

先决条件

在继续之前,需要做一些事情。

 
  • 在您的Linux系统上安装了Docker。
  • 具有sudo特权的普通用户。

步骤1)安装Docker Engine

首先,您需要在系统上安装Docker引擎。我们有详细的文章介绍如何在Ubuntu 20.04 上安装Docker。在docker命令下运行以显示docker版本

$ sudo docker version

如何使用Systemd在Docker容器中运行Jenkins服务器

从上面的代码片段中,我们已经确认已安装docker,并且我们正在运行docker 19.03.13版本。

步骤2)创建一个Jenkins用户

接下来,我们将创建一个“ Jenkins ”系统用户,该用户将管理Jenkins服务。但首先,为Jenkins创建一个系统组:

$ sudo groupadd --system jenkins

然后创建Jenkins系统用户

$ sudo useradd -s / sbin / nologin --system -g jenkins jenkins

最后,如图所示,将Jenkins用户添加到docker组:

$ sudo usermod -aG docker jenkins

要确认Jenkins用户已添加到docker组中,请运行id命令,如下所示

$ id jenkins

输出

[linuxtechi@centos8 ~]$ id jenkins
uid=991(jenkins) gid=986(jenkins) groups=986(jenkins),989(docker)
[linuxtechi@centos8 ~]$

步骤3)从Docker GHub提取Jenkins映像

调用以下命令从Docker Hub中获取最新的Jenkins映像。

$ sudo docker pull jenkins/jenkins:lts

如何使用Systemd在Docker容器中运行Jenkins服务器

在相当稳定的互联网连接上,这通常需要几秒钟。下载完成后,通过调用以下命令来验证是否存在Jenkins映像:

$ sudo docker images | grep jenkins

上面命令的输出

[linuxtechi@centos8 ~]$ sudo docker images | grep jenkins
jenkins/jenkins     lts                 f669140ba6ec        6 days ago          711MB
[linuxtechi@centos8 ~]$

Jenkins需要永久性存储来存储数据,即使在容器崩溃的情况下也可以重复使用。因此,我们将如图所示创建一个存储目录。

$ sudo mkdir /var/jenkins
$ sudo chown -R 1000:1000 /var/jenkins

步骤4)为Jenkins创建systemd服务

使用您喜欢的文本编辑器,创建一个Jenkins systemd文件,如下所示:

$ sudo vi /etc/systemd/system/jenkins-docker.service

粘贴以下内容并保存文件。

[Unit]
Description=Jenkins Server
Documentation=https://jenkins.io/doc/
After=docker.service
Requires=docker.service

[Service]
Type=simple
User=jenkins
Group=jenkins
TimeoutStartSec=0
Restart=on-failure
RestartSec=30s
ExecStartPre=-/usr/bin/docker kill jenkins-server
ExecStartPre=-/usr/bin/docker rm jenkins-server
ExecStartPre=/usr/bin/docker pull jenkins/jenkins:lts
ExecStart=/usr/bin/docker run  --name jenkins-server  --publish 8080:8080 --publish 50000:50000  --volume /var/jenkins:/var/jenkins_home  jenkins/jenkins:lts
SyslogIdentifier=jenkins
ExecStop=/usr/bin/docker stop jenkins-server

[Install]
WantedBy=multi-user.target

要启动Jenkins服务,请先重新加载systemd,然后再启动Jenkins。

$ sudo systemctl daemon-reload
$ sudo systemctl start jenkins-docker

现在让我们检查Jenkins是否正在运行。为此,我们将执行:

$ sudo systemctl status jenkins-docker

如何使用Systemd在Docker容器中运行Jenkins服务器

Jenkins已启动并作为systemd服务运行。由于Jenkins将在端口8080上运行,因此请打开防火墙上的端口,如下所示:

$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo firewall-cmd --reload

要设置Jenkins,只需访问以下

http://server-ip:8080

要继续,您需要提供显示的文件中的密码

[ linuxtechi @ centos8〜] $ cat / var / jenkins / secrets / initialAdminPassword
9c61bd823a404056bf0a408f4622aafc
[ linuxtechi @ centos8〜] $

完成后,点击“继续

如何使用Systemd在Docker容器中运行Jenkins服务器

接下来,选择“安装建议的插件”选项,如图所示。

如何使用Systemd在Docker容器中运行Jenkins服务器

安装程序将指导您完成剩余的步骤。成功安装后,我们将获得以下Jenkins仪表板

如何使用Systemd在Docker容器中运行Jenkins服务器

本文就分享到这里,您学习了如何在docker容器中作为系统服务运行Jenkins。



评论

{{ errors.content }}

Enter+Ctrl