技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Linux>正文
Linux系统下使用Docker安装部署Jenkins
2025年03月12日 Linux 暂无评论 ⁄ 被围观 9次+

简单介绍:

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完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2025 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3