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

// 如显示disabledpermissive信息均表示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]:”提示,输入Yy后回车

# 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

// 可看到容器testnginx01UP状态

打开浏览器,在地址栏中输入“http:// 宿主机的IP”,本实验宿主机的IP址为192.168.5.101

 

 

posted @   YJinHAI  阅读(288)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示