Jenkins持续化部署工具应用
Jenkins持续化部署工具应用
【实验要求】
掌握利用Jenkins持续化部署工具部署,并利用Jenkins工具生成Docker容器。
【前置准备】
要求实验主机能够连接外网,已经正确安装Docker,并关闭防火墙和selinux。
【实验步骤】
1. 验证宿主机的基本环境,要求关闭防火墙和SELINUX。
(1)查看防火墙状态,
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
// 如显示 Active: inactive (dead) 信息则表时firewalld服务已经关闭,否则需执行以下语句关闭firewalld服务。
# systemctl stop firewalld
# systemctl disable firewalld
(2)查看SELINUX状态
# getenforce
Disabled
// 如显示disabled或permissive信息均表示SELINUX已经关闭或临时关闭,否则需执行以下语句关闭SELINUX。
# sed -ri '/^SELINUX/s/(SELINUX=).*/\1disabled/g' /etc/selinux/config // 关闭SELINUX
# setenforce 0 // 临时关闭SELINUX
2. 安装Docker。如Docker已经安装,此步骤可以跳过。
(1)安装必要的一些系统工具
# yum install -y yum-utils device-mapper-persistent-data lvm2
(2)添加软件源信息
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(3)更新并安装Docker-CE
# yum makecache fast
# yum install –y docker-ce-18.03.0.ce
// 在安装过程中,如出现“Is this ok [y/N]:”提示,输入Y或y后回车
# systemctl start docker // 启动docker服务
(4)编辑镜像加速器
# vi /etc/docker/daemon.json
// 添加如下内容
{
"registry-mirrors": ["https://x3n9jrcg.mirror.aliyuncs.com"]
}
保存退出,返回命令行。
(5)开启Docker服务,并设置开机自启动。
# systemctl restart docker
# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
(6)修改编辑docker.service
# vi /usr/lib/systemd/system/docker.service
// 在 ExecStart=/usr/bin/dockerd-current 后 增加
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
保存退出,并重启docker。
# systemctl daemon-reload
# systemctl restart docker
# netstat -tunlp | grep 2375
tcp6 0 0 :::2375 :::* LISTEN 24586/dockerd
说明:如果提示没有netstat命令,则执行yum -y install net-tools命令安装相关工具。
3. 建立/data/build/nginx目录,并在目录下分别编辑Dockerfile、nginx.conf和index.html文件
(1)编辑Dockerfile文件
# mkdir -p /data/build/nginx
# cd /data/build/nginx
# vi Dockerfile
// 添加如下内容
FROM centos:centos7
LABEL maintainer="hbliti<hbliti@gmail.com>"
ENV nginxversion="1.14.0-1" \
os="centos" \
osversion="7" \
elversion="7_4"
RUN yum install -y wget openssl sed &&\
yum -y autoremove &&\
yum clean all &&\
wget http://nginx.org/packages/$os/$osversion/x86_64/RPMS/nginx-$nginxversion.el$elversion.ngx.x86_64.rpm &&\
rpm -iv nginx-$nginxversion.el$elversion.ngx.x86_64.rpm
COPY nginx.conf /etc/nginx/nginx.conf
COPY index.html /data/www/index.html
VOLUME [ "/data/www" ]
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
保存退出,返回命令行。
(2)编辑nginx.conf文件
# vi nginx.conf
// 添加如下内容
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root /data/www;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
保存退出,返回命令行。
(3)编辑index.html文件
# echo "Welcome use jenkins" > index.html
(4)查看/data/build/nginx目录下创建的文件
# ll /data/build/nginx/
total 12
-rw-r--r-- 1 root root 575 Jul 26 21:40 Dockerfile
-rw-r--r-- 1 root root 21 Jul 26 21:43 index.html
-rw-r--r-- 1 root root 1040 Jul 26 21:42 nginx.conf
# cd // 返回到家目录
4. 获取jenkins镜像,利用jenkins镜像生成容器。
(1)创建jenkins生成目录,并给设置该目录访问权限为“777”。
# mkdir /home/jenkins_home
# chmod 777 /home/jenkins_home
(2)获取jenkins镜像,并利用docker images命令查看获取的镜像。
# docker pull jenkinszh/jenkins-zh:latest
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkinszh/jenkins-zh latest 2cb4cce6db0a 6 weeks ago 656MB
(3)创建并启动jenkins容器,并利用docker ps命令查看创建的容器。
#docker run -dit -p 8080:8080 -p 50000:50000 --name testjenkins -v /home/jenkins_home/:/var/jenkins_home -v /data/build/nginx:/data/build/nginx jenkinszh/jenkins-zh:latest
#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f294eed2cdf jenkinszh/jenkins-zh:latest "/sbin/tini -- /usr/…" 3 seconds ago Up 3 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp testjenkins
// 容器已经创建,容器为UP状态,表明容器已经启用
5.访问jenkins。
(1)打开浏览器,在地址栏中输入“http:// 宿主机的IP地址:8080”,打开Jenkins,如下图所示。第一次执行时需要输入管理员密码。本实验宿主机的IP地址为192.168.5.101。
(2)在宿主机上获取管理员密码。
# docker logs testjenkins
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
da8b5cb5cfff44d7b011b79f40717f1b
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
// 其中da8b5cb5cfff44d7b011b79f40717f1b为管理员密码
将获取的管理员密码粘贴到文本框中,单击“继续”按钮。
(3)进入插件安装界面,提供“安装推荐的插件”和“选择插件来安装”两种方式,本实验选择“安装推荐的插件”方式,单击“安装推荐的插件”按钮,如下图所示。
说明:插件安装时间较长,需耐心等待一会。
(4)插件成功安装后,需创建管理员用户,如下图所示。
设置好账户信息后,单击“保存并完成”按钮,进入Jenkins实例配置界面,继续单击“保存并完成”按钮。如下图所示。
单击“开始使用Jenkins”按钮,进入Jenkins工作主界面,如下图所示。
6. jenkins配置
(1)单击左侧导航栏中的“系统管理(Manage Jenkins)”,打开“管理Jenkins”页面。
(2)在“管理Jenkins”页面中,单击“插件管理(Manage Plugins)”按钮,如下图所示。
(3)在打开的“插件管理”页面中,单击“可选插件”选项卡。
(4)在窗口右上方的“过滤”文本框中关键字,可以查找所需插件,本实验输入“docker”,查找Docker Pipline 和docker-build-step插件,查找到插件后,勾选插件后,单击“直接安装”按钮安装该插件,如下图所示。
如下图所示,插件安装成功后,单击“返回首页”按钮,返回首页。
(5)单击左侧导航栏中的“系统管理”,打开“管理Jenkins”页面,在“管理Jenkins”页面中单击“系统配置”选项,如下图所示。
(6)在打开的“系统配置”页面中,找到“Docker Builder”栏目,在“Docker URL”文本框中输入 tcp://192.168.5.101:2375 后,点击“Test Connection”按钮,如果测试通过,则显示Connected to tcp://192.168.5.101:2375,表明可以通过外部访问到192.168.5.101主机的docker服务。
设置完成后,单击窗口底部的“保存”按钮。
7. 利用Jenkins生成自定义镜像
(1)点击导航栏中的“新建任务”选项,在打开的窗口中输入任务名为“docker-nginx”,选择“构建一个自由网络的软件项目”选项后,单击窗口底部的“确定”按钮。
(2)在打开的页面中,在“构建触发器”栏目中选择“轮询SCM”,在“日程表”文本框中输入“H/1 * * * *”,如下图所示。
(3)点击“增加构建步骤”,选择“Execute Docker command”选项,如下图所示。
在Execute Docker command栏目下依次做以下操作
n “Docker command”为“Create/build image”
n “Build context folder”文本框中输入“/data/build/nginx/”
n 在“Tag of the resulging docker image”文本框输入“nginx:v$BUILD_NUMBER”。
(4)设置完成后,点击窗口下方的“保存”按钮,保存设置。
(5)单击窗口左侧导航栏中的“立即构建”选项,开始构建镜像,镜像如构建成功,窗口左侧的“构建历史”中,构建任务按钮会显示蓝色,如下图所示。
也可通过查看构建任务的“控制台输出”看到构建过程,如下图所示。
7. 利用自定义的镜像生成nginx容器,并验证
# docker images nginx:v2
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v2 92eb0452eab2 3 hours ago 233MB
# docker run -dit --name testnginx01 -p 80:80 nginx:v2
# docker ps –a
// 可看到容器testnginx01是UP状态。
打开浏览器,在地址栏中输入“http:// 宿主机的IP地址”,本实验宿主机的IP地址为192.168.5.101。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!