简单介绍:
1、Jenkins 是一个开源的自动化服务器,广泛用于软件开发中以实现持续集成和持续交付(CI/CD)
2、通过 Jenkins,团队可以自动执行从构建、测试到部署的应用程序开发生命周期中的各个步骤
3、它支持多种操作系统,并且能够与大量的工具和技术集成,为开发者提供了极大的灵活性
4、Jenkins依赖java环境,需要安装jdk,完整的Jenkins持续集成还需要git、maven以及tomcat的支持
5、Jenkins支持Docker安装部署
前期准备:
欧拉操作系统openEuler 24.03-LTS-SP1安装配置图解教程
https://www.osyunwei.com/archives/14957.html
1、禁用SELinux
rpm -q grubby #确认grubby软件包是否已经安装
grubby --update-kernel ALL --args selinux=0 #添加selinux=0到内核命令行
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
/usr/sbin/sestatus -v #查看selinux状态,disabled表示关闭
shutdown -r now #重启系统
getenforce #查看结果为Disabled
2、防火墙设置
openEuler 24.03-LTS-SP1默认是firewalld防火墙,因为Docker需要iptables,我们这里卸载firewall,安装iptables作为防火墙,并清空防火墙规则
2.1关闭firewall
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld
systemctl stop firewalld
yum -y remove firewalld
2.2安装iptables防火墙,开启相应的端口
yum -y install iptables-services #安装
systemctl enable iptables.service #设置防火墙开机启动
systemctl start iptables.service #启动防火墙使配置生效
iptables -F #清空规则
service iptables save #保存配置规则
systemctl restart iptables.service #启动防火墙使配置生效
iptables -L -v -n #查看规则
3、设置系统时间
localectl set-locale LC_TIME=C.UTF-8 #让date默认显示为 24 小时制
vi /etc/locale.conf
LC_TIME=C.UTF-8
:wq! #保存退出
source /etc/locale.conf #使配置生效
rm -rf /etc/localtime #先删除默认的时区设置
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换亚洲/上海作为默认时区
vi /etc/sysconfig/clock #添加时区
Zone=Asia/Shanghai
:wq! #保存退出
timedatectl set-local-rtc 0
hwclock --systohc -u #系统时钟和硬件时钟同步,当前系统时区不为 UTC,是CST时间,所有要加-u参数
shutdown -r now #重启系统
date #显示系统时间
date -s "2025-03-12 15:24:00" #修改时间
watch -n 1 date #显示实时时间
vi /etc/chrony.conf
#pool pool.ntp.org iburst iburst #注释
server ntp.aliyun.com iburst #添加
:wq! #保存退出
systemctl enable chronyd #添加开机启动
systemctl restart chronyd #重启服务
chronyc sources -v #查看时间同步信息
4、系统参数优化
vi /etc/security/limits.conf #在最后一行添加以下代码
* soft nproc unlimited
* hard nproc unlimited
* soft nofile 1000000
* hard nofile 1000000
:wq! #保存退出
vi /etc/sysctl.conf #在最后一行添加以下代码
fs.file-max = 65535000
fs.nr_open = 65535000
kernel.pid_max=655350
vm.swappiness = 0
net.ipv4.ip_forward = 1
vm.max_map_count=262144
:wq! #保存退出
/sbin/sysctl -p
ulimit -a #查看
ulimit -n 1000000 #设置
安装篇
1、安装Docker
1.1添加docker用户组
groupadd docker
#添加普通用户myuser到docker组和wheel组,使其具有docker命令的执行权限
#如果是root用户可以不用执行,默认就有权限
usermod -aG docker myuser
usermod -aG wheel myuser
#刷新用户组
newgrp docker
1.2下载docker安装包
docker下载地址:https://download.docker.com/linux/static/stable/x86_64/
目前最新版本:https://download.docker.com/linux/static/stable/x86_64/docker-28.0.1.tgz
Docker-Compose下载地址:https://github.com/docker/compose/releases
下载最新版本:https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64
mkdir -p /data/soft/docker #创建docker安装包存放目录
上传下载好的安装包到/data/soft/docker目录
1.3创建docker配置、启动、关闭文件
mkdir -p /data/server/docker #创建docker数据存放目录,默认目录是/var/lib/docker
mkdir -p /data/server/docker/etc #创建docker配置文件放存放目录,默认是/etc/docker/daemon.json
chmod 755 -R /data/server/docker/ #设置权限
1.4创建启动文件
vi /data/soft/docker/docker.service #编辑
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --data-root=/data/server/docker --config-file=/data/server/docker/etc/daemon.json
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
:wq! #保存退出
1.5设置daemon.json配置文件,默认无法拉取镜像,我们添加镜像地址
#镜像加速站,可以通过增加前缀的方法直接拉取镜像
#https://docs.daocloud.io/community/mirror
vi /data/soft/docker/daemon.json #注意格式缩进 { "registry-mirrors": [ "http://docker.m.daocloud.io", "http://mirror.ccs.tencentyun.com", "http://docker.rainbond.cc" ], "debug": true, "experimental": true } :wq! #保存退出
1.6创建安装脚本
vi /data/soft/docker/install.sh #创建安装脚本
#!/bin/bash
echo '解压docker安装包'
cd /data/soft/docker
tar -zxvf $1
echo '将docker目录移动到/usr/bin目录下'
mv docker/* /usr/bin
echo '将docker.service 移到/usr/lib/systemd/system/ 目录'
cp docker.service /usr/lib/systemd/system/
echo '将配置文件daemon.json移到/data/server/docker/etc/目录'
cp daemon.json /data/server/docker/etc/
echo '添加文件执行权限'
chmod +x /usr/lib/systemd/system/docker.service
echo '重新加载配置文件'
systemctl daemon-reload
echo '启动docker'
systemctl start docker.service
echo '设置开机自启'
systemctl enable docker.service
echo 'docker安装成功'
:wq! #保存退出
chmod +x /data/soft/docker/install.sh #添加执行权限
说明:
在Linux系统中,/usr/bin目录是用于存放用户可执行的命令或程序的标准目录之一。
将Docker的可执行文件拷贝到/usr/bin目录下是为了方便用户在任何位置都可以直接执行Docker命令,而不需要指定完整的路径。
/usr/bin目录是用于存放系统范围的可执行文件的标准目录,包括Docker的二进制文件和其他重要组件。对此目录进行任意更改可能会导致Docker无法正常运行或引发系统稳定性问题。
1.7安装docker
yum -y install tar #安装tar命令,openEuler 24.03-LTS-SP1最小化安装没有tar命令
cd /data/soft/docker
sh install.sh docker-28.0.1.tgz
systemctl daemon-reload #重新加载配置
systemctl restart docker.service #重启docker
docker info #检查docker镜像加速器是否配置成功
1.8测试docker是否可用
docker pull hello-world #下载一个镜像实例
docker run hello-world #运行一个镜像实例
docker images hello-world #查看该镜像的信息
docker info |grep "Docker Root Dir" #查看docker数据存储目录
#相关检测命令
cat /data/server/docker/etc/daemon.json | jq .
systemctl daemon-reload
systemctl restart docker
docker info
docker info | grep Cgrou
1.9安装Docker-Compose
Docker-Compose是docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用。
使用Docker-Compose,我们可以通过yaml文件定义应用程序的各个服务,并由单个命令完成应用的创建和启动。
Docker-Compose依靠Docker进行工作,必须确保已经安装了docker才能安装Docker-Compose
#把docker-compose安装在/usr/bin/目录下
#拷贝Docker-Compose到/usr/bin目录
cp /data/soft/docker/docker-compose-linux-x86_64 /usr/bin/docker-compose
#添加执行权限
chmod +x /usr/bin/docker-compose
#查看版本
docker-compose --version
2、安装Jenkins
2.1下载jenkins,我们使用docker版本
官方网站:
https://www.jenkins.io/download/
https://github.com/jenkinsci/jenkins
镜像下载地址
docker pull jenkins/jenkins:latest
或者
docker pull m.daocloud.io/docker.io/jenkins/jenkins:latest
docker tag m.daocloud.io/docker.io/jenkins/jenkins:latest docker.io/jenkins/jenkins:latest
docker rmi m.daocloud.io/docker.io/jenkins/jenkins:latest
2.2创建Jenkins容器
#创建容器挂载目录,用于持久化数据
#默认情况下Jenkins容器内部使用UID和GID均为1000的用户来运行进程,对应于容器内的jenkins用户
mkdir -p /data/server/jenkins_home
mkdir -p /data/server/jenkins_home/tmp
chown 1000:1000 /data/server/jenkins_home -R
chmod 755 /data/server/jenkins_home -R
#创建Jenkins容器
docker run -d -p 8080:8080 -p 50000:50000 \
--name jenkins \
-v /data/server/jenkins_home:/var/jenkins_home \
-v /data/server/jenkins_home/tmp:/tmp \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:latest
参数说明:
-p 8080:8080: 将Jenkins的默认Web端口5000映射到主机的8080端口
-v /data/server/jenkins_home:/var/jenkins_home 持久化Jenkins数据,docker内部的/var/jenkins_home数据会持久化到主机的/data/server/jenkins_home/目录下面
-v /data/server/jenkins_home/tmp:/tmp 把docker内部的/tmp目录持久化到主机的/data/server/jenkins_home/tmp目录下面
-v /var/run/docker.sock:/var/run/docker.sock 允许 Jenkins 控制主机的 Docker
docker ps #查看容器
docker logs jenkins #查看日志
#初始化密码在容器内的这个位置保存着
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
#对应的宿主机目录是:/data/server/jenkins_home/secrets/initialAdminPassword
cat /data/server/jenkins_home/secrets/initialAdminPassword
#修改插件镜像地址
<url>https://updates.jenkins.io/update-center.json</url>
#修改为
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json<url>
vi /data/server/jenkins_home/hudson.model.UpdateCenter.xml
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json<url>
:wq! #保存退出
docker restart jenkins #重启容器
浏览器打开:
http://192.168.21.240:8080/
输入密码登录
修改密码
#容器操作相关命令
docker stop jenkins
docker restart jenkins
docker rm jenkins
docker logs jenkins
至此,Linux系统下使用Docker安装部署Jenkins完成。



