持续集成与持续交付(CI/CD)(4)---添加本地镜像仓库、上传镜像,完成本地与远程容器自启

一、添加本地镜像仓库、上传镜像

之前我们创建的test项目实现了根据gitlab的dockerfile进行自动构建镜像的功能,在之前功能的基础之上添加本地镜像仓库,能够在完成镜像构建之后将镜像上传到本地镜像仓库

1. 环境准备
#1. 查看gitlab状态,确保可用
[root@server1 ~]# gitlab-ctl status

#2. 拉取仓库镜像registry
[root@server2 ~]# docker images
[root@server2 ~]# docker ps -a
[root@server2 ~]# docker rm demo #删除之前在jenkins服务器上创建的容器
demo
[root@server2 ~]# docker pull registry #拉取仓库镜像registry

#3. 启动容器,并设置卷挂载与端口映射
[root@server2 ~]# docker run -d --name registry -v /opt/registry:/var/lib/registry -p 5000:5000 registry
6933983dafd1a08d447609b10e070b5cf8308a0bac59f0def75795c515d610cb
[root@server2 ~]# docker ps

在这里插入图片描述
在这里插入图片描述
注:将本地/opt/registry路径挂载到容器内的/var/lib/registry下,实现在容器内的数据在宿主机对应位置的持久化存储。

2. 项目配置更改
[root@server2 ~]# ll /var/run/docker.sock 
srw-rw---- 1 root docker 0 Jun  4 09:27 /var/run/docker.sock
[root@server2 ~]# chmod 777 /var/run/docker.sock
[root@server2 ~]# id jenkins
uid=998(jenkins) gid=996(jenkins) groups=996(jenkins)
[root@server2 ~]# usermod -G docker jenkins 
[root@server2 ~]# id jenkins
uid=998(jenkins) gid=996(jenkins) groups=996(jenkins),995(docker)

跳过push,使之自动push到仓库中
在这里插入图片描述
在这里插入图片描述

3. 构建测试

手动点击触发
在这里插入图片描述
完成构建并将镜像push到本地仓库中
在这里插入图片描述
最新拉取的镜像
在这里插入图片描述

在这里插入图片描述

二、本地创建项目,完成容器自启

创建新项目docker,能够在test项目完成后触发docker项目,完成容器的自动化构建
git -> push -> gitlab -> triger -> jenkins -> test1(from dokcerfile to build images and push images to registry) -> triger -> docker(docker run container)

1. 创建docker项目并做相应配置

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

[root@server2 registry]# usermod -s /bin/bash jenkins 
[root@server2 registry]# su - jenkins 
-bash-4.2$ docker ps 
-bash-4.2$ docker images
-bash-4.2$ docker run -d --name demo -p 80:80 localhost:5000/webserver
465f63366420d25b7e2a65a469ae05bcd44d9bfb96cedab88427c6f7d36b659b
-bash-4.2$ docker ps
-bash-4.2$ curl localhost
www.westos.org
www.westos.org
www.westos.org
www.westos.org
-bash-4.2$ docker rm -f demo
demo
-bash-4.2$ docker ps

在这里插入图片描述

在这里插入图片描述

2. 手动触发docker项目并查看控制台输出

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

3. 本地查看是否有容器启动

在这里插入图片描述

三、在远程环境构建

上面的实验我们最终都是在本地jenkins服务器上完成了构建,比如镜像构建、容器启动,这些都在jenkins服务器上,这样会造成本地压力过大并且没什么意义,在生产环境中是不可取的,常常需要在远程主机上执行任务.

开启新的节点,安装docker并作相应配置

[root@server2 sysctl.d]# docker rm -f webserver
webserver
[root@foundation yum.repos.d]# scp docker-ce.repo 192.168.0.3:/etc/yum.repos.d/
[root@server2 sysctl.d]# scp docker.conf server3:/etc/sysctl.d/

[root@server3 yum.repos.d]# yum install -y docker-ce
[root@server3 yum.repos.d]# sysctl --system  #使内核参数生效
[root@server3 yum.repos.d]# systemctl enable --now docker #启动docker

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

[root@server3 yum.repos.d]# cd /etc/docker/
[root@server3 docker]# ls
key.json
[root@server3 docker]# vim daemon.json
[root@server3 docker]# systemctl reload docker  #使之生效
[root@server3 docker]# docker info
[root@server3 docker]# docker pull 192.168.0.2:5000/webserver:latest
[root@server3 docker]# docker rmi 192.168.0.2:5000/webserver:latest

设置镜像拉取镜像
在这里插入图片描述
在这里插入图片描述
配置已生效,可以从server2的docker仓库中拉取
在这里插入图片描述
删除已拉取的镜像,在jenkins自动在远程主机上构建
在这里插入图片描述

jenkins中安装ssh插件用作远程交付
在这里插入图片描述
在这里插入图片描述
在jenkins中配置安全许可凭证,以用户密码的方式添加,指定远程主机和端口(22)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改jenkins中创建的docker项目的构建条件
在这里插入图片描述
查看server2上是否创建了新的镜像。server3上是否启动了新的容器,并使用curl localhost测试,看是否能看到修改后的测试页面

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

[root@server1 ~]# cd demo/
[root@server1 demo]# ls
Dockerfile  index.html  README.md
[root@server1 demo]# vim index.html 
[root@server1 demo]# git commit -a -m "v5"
[root@server1 demo]# git push -u origin master

在这里插入图片描述
server1将更改提交上传到gitlab仓库
在这里插入图片描述
在这里插入图片描述
server2上构建了最新的镜像
在这里插入图片描述
在这里插入图片描述
访问到更改后的测试页内容,镜像启动了容器,构建成功。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值