在带有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管理控制台。