持续集成与持续交付--通过dockerfile构建镜像,使用jenkins将镜像推送到gitlab仓库中(本机调用)

一、docker+jenkins+gitlab–通过dockerfile构建镜像,使用jenkins将镜像推送到gitlab仓库中
1、先用本地docker主机==
在server3(jenkins主机上)安装docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo	#添加软件源信息
vim docker-ce.repo
yum -y install docker-ce						#通常会有软件依赖性
cat /etc/redhat-release							#查看系统版本
yum -y install docker-ce container-selinux-2.77-1.el7.noarch.rpm	#下载解决依赖性
systemctl start docker							#开启
docker info								#查看信息
cd /var/lib/docker							#容器数据地址
yum install -y bash-*
mkdir -p /etc/docker
vim daemon.json
{
  "registry-mirrors": ["https://owrv442h.mirror.aliyuncs.com"]
}
systemctl daemon-reload 
systemctl restart docker						#部署加速器

在这里插入图片描述

2、调用
jenkins软件是通过本地普通用户进行的,会出现权限问题

[root@server3 docker]# ll /run/docker.sock 
srw-rw---- 1 root docker 0 Jul 12 14:01 /run/docker.sock
[root@server3 docker]# chmod 777 /run/docker.sock

在这里插入图片描述
3、网页设置

Docker Host URI:unix:///run/docker.sock					#docker主机:本机调用
Docker registry URL:https://reg.westos.org				#docker仓库

[root@server3 docker]# vim /etc/hosts					#配置解析
172.25.7.1 server1 reg.westos.org

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
问题:
(1)#在连接harbor仓库时会出现仓库加密的问题,需要添加将仓库证书添加连接过来。
[root@server1 docker]# cd /etc/docker/
[root@server1 docker]# ls
certs.d daemon.json key.json
[root@server1 docker]# scp -r certs.d/ server3:/etc/docker/
#利用证书解决了加密问题
在这里插入图片描述
(2)仓库处理加密以外还存在认证问题,
Registry credentials:add - jenkins,填入选择即可
在这里插入图片描述

Repository Name: library/demo					#上传镜像时的镜像仓库名称,二级自己起
Tag:${BUILD_NUMBER}							#jenkins构建号

在这里插入图片描述
4、先不上传看看在本地能不能把镜像构建出来
在这里插入图片描述

5、测试
gitlab主机:

[root@server2 ~]# cd demo/
[root@server2 demo]# vim dockerfile
[root@server2 demo]# ls
dockerfile  index.html
[root@server2 demo]# cat index.html 
westos.org

在这里插入图片描述

[root@server2 demo]# git add Dockerfile 					#添加
[root@server2 demo]# git commit -m "add dockerfile"			#描述
[root@server2 demo]# git push -u origin master				#上传

在这里插入图片描述在这里插入图片描述在这里插入图片描述
gitlab网页中会出现变化,并会出现第三次变更,主动出发jenkins,查看控制台输出成功使用jenkins+gitlab构建本地dockerfile
在这里插入图片描述在这里插入图片描述

[root@server3 docker]# docker images					#构建成功
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
reg.westos.org/library/demo   3                   aa4f78ab1891        5 minutes ago       132MB
reg.westos.org/library/demo   latest              aa4f78ab1891        5 minutes ago       132MB
nginx                         latest              0901fa9da894        34 hours ago        132MB

在这里插入图片描述
6、测试可以上传的镜像

网页操作,将现在第四次一起上传镜像,始终保持最新一次构建

[root@server3 docker]# docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
reg.westos.org/library/demo   3                   aa4f78ab1891        13 minutes ago      132MB
reg.westos.org/library/demo   4                   aa4f78ab1891        13 minutes ago      132MB
reg.westos.org/library/demo   latest              aa4f78ab1891        13 minutes ago      132MB
nginx                         latest              0901fa9da894        35 hours ago        132MB

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7、构建后续操作
在这里插入图片描述

8、新建新的jenkins items,构建镜像启动容器
在这里插入图片描述在这里插入图片描述
shell命令测试:

docker run -d --name webserver reg.westos.org/library/demo

在这里插入图片描述在这里插入图片描述

[docker] $ /bin/sh -xe /tmp/jenkins1486572390528695534.sh		#手动触发成功,控制台输出
+ docker run -d --name webserver reg.westos.org/library/demo
880b6ffef97b8055068abd14b40a4ebd9a7753a1a4d16f903288f65833ea709d
Finished: SUCCESS

在这里插入图片描述
#查看并访问

[root@server3 docker]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS               NAMES
880b6ffef97b        reg.westos.org/library/demo   "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes        80/tcp              webserver
[root@server3 docker]# docker inspect webserver
[root@server3 docker]# curl 172.17.0.2
westos.org

在这里插入图片描述在这里插入图片描述在这里插入图片描述

9、按照流程作一个整体的触发
流程:
user–>git(提交代码)–>gitlab–>wehook(触发jenkins)–>jenkins–>调用docker build plugins 插件–>build images(创建镜像)–>push registry(推送到仓库)–>trigger–>docker project -->docker run -->webserver

由于容器名称唯一,不能重复会出现问题,所以需要改正shell命令,添加一个判断

docker ps -a | grep webserver && docker rm -f webserver
sleep 1
docker run -d --name webserver reg.westos.org/library/demo

全流程操作:第五次构建

[root@server2 demo]# vim index.html 
[root@server2 demo]# git add index.html 
[root@server2 demo]# git commit -m "update index.html"
[master 7238a57] update index.html
 1 file changed, 8 insertions(+)
[root@server2 demo]# git push -u origin master

[root@server3 docker]# curl 172.17.0.2				#已更改

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值