在带有Systemd的Docker容器中运行Jenkins Server

时间:2020-02-23 14:31:25  来源:igfitidea点击:

Jenkins是一个开源自动化服务器,用于自动化软件的持续集成和交付中经常遇到的重复性任务。在本教程中,我们将看到如何在通过Systemd初始化系统管理的Docker容器上运行Jenkins服务器。

在Docker依赖项中运行Jenkins Server

在Docker上运行Jenkins Server具有一些需要满足的依赖关系.Linux或者macOS安装了Docker Engine并正在运行具有sudo特权的用户帐户

安装Docker Engine

首先在基本操作系统上安装Docker引擎。我们可以使用我们之前的教程进行Docker安装。

如何在Ubuntu/Debian/Fedora/Arch/CentOS上安装Docker CE

安装后,可以通过运行以下命令确认安装的版本:

$docker version
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:24:51 2016
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:23:15 2016
  OS/Arch:          linux/amd64
  Experimental:     false

第2步:添加jenkins用户

接下来是将Jenkins系统用户添加到服务器。该用户将管理Jenkins服务。

sudo groupadd --system jenkins
sudo useradd -s /sbin/nologin --system -g jenkins jenkins
sudo usermod -aG docker jenkins

确保此用户已添加到docker组。

# id jenkins
uid=999(jenkins) gid=998(jenkins) groups=998(jenkins),999(docker)

拉詹金斯的LTS docker镜像发行版

$sudo docker pull jenkins/jenkins:lts

确认图像下载成功。

$docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins/jenkins     lts                 9cff19ad8c8b        3 weeks ago         730MB

建立Jenkins资料目录和容器

我们需要为Jenkins数据提供永久存储,以确保使数据保持完整,并因此在容器关闭或者崩溃的情况下可以重复使用。

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

创建Jenkins Container Systemd服务

为詹金斯创建一个新的systemd服务单元文件。

sudo vim /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

重新加载systemd并启动jenkins服务

sudo systemctl daemon-reload
sudo systemctl start jenkins-docker

在检查状态时,我们应该会收到一条正在运行的消息。

$sudo systemctl status jenkins-docker
* jenkins-docker.service - Jenkins Server
   Loaded: loaded (/etc/systemd/system/jenkins-docker.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2016-10-31 15:32:59 PDT; 6min ago
     Docs: https://jenkins.io/doc/
 Main PID: 24964 (docker)
    Tasks: 11 (limit: 1111)
   CGroup: /system.slice/jenkins-docker.service
           `-24964 /usr/bin/docker run --privileged --name jenkins-server --publish 80:8080 --publish 50000:50000 --volume /var/jenkins:/var/jenkins_h

Oct 31 15:33:23 ubuntu-01 jenkins[24964]: INFO: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
Oct 31 15:33:23 ubuntu-01 jenkins[24964]: Oct 31, 2016 10:33:23 PM hudson.model.AsyncPeriodicWork run
Oct 31 15:33:23 ubuntu-01 jenkins[24964]: INFO: Finished Download metadata. 13,352 ms
Oct 31 15:33:25 ubuntu-01 jenkins[24964]: Oct 31, 2016 10:33:25 PM hudson.model.UpdateSite updateData
Oct 31 15:33:25 ubuntu-01 jenkins[24964]: INFO: Obtained the latest update center data file for UpdateSource default
Oct 31 15:33:25 ubuntu-01 jenkins[24964]: Oct 31, 2016 10:33:25 PM jenkins.InitReactorRunner onAttained
Oct 31 15:33:25 ubuntu-01 jenkins[24964]: INFO: Completed initialization
Oct 31 15:33:25 ubuntu-01 jenkins[24964]: Oct 31, 2016 10:33:25 PM hudson.WebAppMain run
Oct 31 15:33:25 ubuntu-01 jenkins[24964]: INFO: Jenkins is fully up and running

解锁Jenkins

浏览到URLhttp://[serverip | hostname]:8080以访问Web安装向导。

首次访问新的Jenkins实例时,系统会要求我们使用自动生成的密码将其解锁。

从获取密码

# cat /var/jenkins/secrets/initialAdminPassword 
eec851b6f1ff63ce9f373a5e50d82fad

将自动生成的字母数字密码复制粘贴到"管理员密码"字段中,然后单击"继续"。

在下一页中,安装推荐的插件或者适合我们所需的Jenkins用法的插件。如果不确定,请选择安装推荐的插件。

接下来是创建一个用于管理Jenkins服务器的管理员用户帐户。

成功安装后,我们将进入Jenkins管理控制台。