原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:『中级篇』docker之CI/CD持续集成-项目生成镜像(76)

开始想用docker registry做私有镜像库,后来放弃了,知道的老铁应该知道这个玩意没有界面很不爽,后来选择了Harbor,还是通过vagrant 创建一个虚拟服务器,这样下来一共创建3个了,也就在生产环境下估计需要3个以上才可以完成整个的CICD持续化集成。前期的3个要求都是4g双核的,gitlab,gitlabci,Harbor 都是这样要求的。我的电脑i7处理器,16g内存让老铁看看跑起来后的效果。源码:github.com/limingios/d…

通过vagrant 安装

vagrant reload
复制代码

下载Harbor

  • 选择目前最新版本1.5.2
    github.com/vmware/harb…
    我选择的是online版本,两种版本基本上差不多。
sudo yum -y install lrzsz
#在windows下载的1.5.2 online 上传上去
rz
复制代码
  • 解压harbor
tar xvf harbor-online-installer-v1.5.2.tgz
复制代码
  • 安装
cd harbor
sudo ./install.sh
复制代码
  • 需要换成另外一种安装方法。
sudo ./prepare
复制代码
  • 真正的安装
sudo docker-compose up -d
复制代码

安装成功

访问机器:172.28.128.6 我是自动获取的ip

正常访问
用户名:admin
密码:Harbor12345
可以执行如下的命令进行停止和启动

停止

sudo docker-compose stop
复制代码

启动

sudo docker-compose start
复制代码

测试harbor

  • 启动服务
sudo serivce docker restart
cd harbor
sudo docker-compose start
复制代码
  • 修改参数

docker默认是从官方拉取镜像的,并且从1.12版本之后,默认私有仓库是使用https来进行连接,所以我们这里需要进行一些相应的修改:

sudo vi /etc/docker/daemon.json
#写入{"insecure-registries":["172.28.128.6"]}sudo systemctl restart docker
复制代码

目前很多文章都是通过修改docker的配置文件“etc/systemconfig/docker",重启docker来解决这个问题。但发现docker1.12.3版本并无此文件,根据网上创建此文件,并填入相应内容,重启docker无效果,仍然报此错误。
解决方法:在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入

harbor 就是使用的80端口,根本不就需要在docker-compose.yml 配置什么5000端口。

#因为没配置http的过滤, 某人是使用https,就拒绝了。
connect: connection refused
#配置了上边的insecure-registries
server gave HTTP response to HTTPS client
复制代码

最后登录,直接sudo docker login 私服地址不要加什么端口号
用户名:admin
密码:Harbor12345

push 镜像试试

  • 新建用户
  • 新建项目
#这个错误,就是未建立项目。
f9d9e4e6e2f0: Preparing
denied: requested access to the resource is denied
复制代码
  • push项目
sudo docker pull busybox
sudo docker tag busybox 172.28.128.6/idig8/busybox
sudo docker login 172.28.128.6 -u idig8 -p 123456789
sudo docker push 172.28.128.6/idig8/busybox复制代码

终于成功了,前前后后大概怼了3个多小时,从10点对到了凌晨1点。吸口烟,百度里面太多坑爹了,很多人写文章就是直接复制,转载我不知道他到底实践没有,我这边都是边实践帮告诉大家咋用。感觉harbor真的比docker 仓库爽太多了,看到中文的那一刻我感觉我以后必须用这个放弃docker仓库。

远程连接harbor

  • 查找Docker的服务文件:登录到已经安装Docker的服务器,输入 systemctl status docker 查看Docker的service文件。
sudo systemctl status docker
复制代码
  • 编辑docker.service文件:在ExecStart处添加 –insecure-registry 参数。
sudo vi /usr/lib/systemd/system/docker.service
复制代码
  • 重新加载service文件,重启docker服务。
sudo systemctl daemon-reload
sudo systemctl restart docker
复制代码
  • 尝试远程登录
sudo docker login http://172.28.128.6 -u admin -p Harbor12345
复制代码

gitlab gitlab-ci harbor

通过gitlab-ci往harbor上打对应的镜像包

  • 修改 .gitlab-ci.yml

增加release,当打包的时候执行生成镜像并发送到远程harbor服务器上。
另外说明下,虽然咱们在crt编辑器连接linux的时候需要前面加上sudo,但是在script脚本的时候,不允许加入sudo,如果加了 就会报错。

stages:- style- test- deploy- releasepep8:stage: stylescript:- pip install tox- tox -e pep8tags:- python2.7unittest-py27:stage: testscript:- pip install tox- tox -e py27tags:- python2.7unittest-py34:stage: testscript:- pip install tox- tox -e py34tags:- python3/4docker-deploy:stage: deployscript:- docker build -t flask-demo .- if [ $( docker ps -aq --filter name=web) ]; then docker rm -f web;fi- docker run -d -p 5000:5000 --name web flask-demotags:- test1only:- master
docker-image-release:stage: releasescript:- docker login 172.28.128.6 -u idig8 -p 123456789- docker build -t 172.28.128.6/idig8/flask-demo:$CI_COMMIT_TAG .- docker login 172.28.128.6 -u idig8 -p 1qaz@WSX3edc- docker push 172.28.128.6/idig8/flask-demo:$CI_COMMIT_TAGtags:- test1only:- tags复制代码

这个执行后,就会自动进行pipline操作,然后通过merge到master分支

.

pipline 执行通过后,可以进行merge到master分支

合并到master分支,会自动触发pipline,多执行deploy操作

  • 如果我们想已经到master分支了,就光执行tag打包生成镜像怎么搞呢

看来修改 .gitlab-ci.yml 增加except 在每个任务中。

stages:- style- test- deploy- releasepep8:stage: stylescript:- pip install tox- tox -e pep8tags:- python2.7except:- tagsunittest-py27:stage: testscript:- pip install tox- tox -e py27tags:- python2.7except:- tagsunittest-py34:stage: testscript:- pip install tox- tox -e py34tags:- python3/4except:- tagsdocker-deploy:stage: deployscript:- docker build -t flask-demo .- if [ $( docker ps -aq --filter name=web) ]; then docker rm -f web;fi- docker run -d -p 5000:5000 --name web flask-demotags:- test1only:- masterdocker-image-release:stage: releasescript:- docker login 172.28.128.6 -u idig8 -p 123456789- docker build -t 172.28.128.6/idig8/flask-demo:$CI_COMMIT_TAG .- docker login 172.28.128.6 -u idig8 -p 1qaz@WSX3edc- docker push 172.28.128.6/idig8/flask-demo:$CI_COMMIT_TAGtags:- test1only:- tags
复制代码
  • 新建tag

New tag

  • 进入harbor看看

PS:实际上这个例子,就是特定版本的docker image的产生。一个版本的发布代表我们这个软件的稳定的版本的问世,接下来就可以进行对稳定版本的部署,我们对稳定版本的部署,稳定版本的部署具体是docker swarm还是k8s,最重要的是我们已经有了一个docker image,我们可以通过手动,或者自动的升级。update docker image 实现服务的不中断。
总体言之这几次的流程是:开发代码提交到分支后,分支下进行校验pipline,没有问题,进行deploy的,在deploy测试没有问题,打包tag,形成稳定的dockerimage版本。

『中级篇』docker之CI/CD持续集成-项目生成镜像(76)相关推荐

  1. ci持续集成工程师前景_『中级篇』docker之CI/CD持续集成-项目生成镜像(76)

    开始想用docker registry做私有镜像库,后来放弃了,知道的老铁应该知道这个玩意没有界面很不爽,后来选择了Harbor,还是通过vagrant 创建一个虚拟服务器,这样下来一共创建3个了,也 ...

  2. 『中级篇』docker之CI/CD持续集成-(终结篇)(77)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-(终结篇)(77) 今天是中级终结篇的最后一次了,想想在二个月的时间,每天的坚持学 ...

  3. 『中级篇』docker Image概述(13)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker Image概述(13) 什么是镜像,镜像是怎么产生的,通过这节的学习的Docker container ...

  4. 『中级篇』docker之wordpress容器SSL(番外篇)(78)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之wordpress容器SSL(番外篇)(78) 搞了2天终于搞定了,现在分享给大家. apache2 ...

  5. 『中级篇』docker容器安装wordpress(37)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker容器安装wordpress(37) 第一节的时候我就部署过wordpress,可能很多老铁一头雾水不知道 ...

  6. 『中级篇』docker之虚拟机创建vagrant技巧(番外篇)(81)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之虚拟机创建vagrant技巧(番外篇)(81) 之前一直用的原生的centos7的源镜像安装虚拟机,然 ...

  7. 『中级篇』Docker Cloud自动构建 Docker image(55)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』Docker Cloud自动构建 Docker image(55) 一步一步的接近下面这个图,来通过时间的方式git ...

  8. 『中级篇』docker导学(一)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker导学(一) 这两年容器技术及其相关工具,平台异常火爆.在各大技术论坛或云计算峰会议题中,都会占很大比重, ...

  9. 『中级篇』docker企业版本地安装之UCP(57)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker企业版本地安装之UCP(57) 安装虚拟机,准备安装docker ee,源码:https://githu ...

最新文章

  1. 动态显示时采色改为单帧采色
  2. 无线渗透--wifiphisher之wifi钓鱼获取wifi密码
  3. java 线程池 中断_如何中断(interrupt)线程(thread)(线程池的线程中断我的理解是一个意思)...
  4. adc采样时间_太秀了!单片机内置 ADC 实现高分辨率采样?
  5. 粉刷木板(ybtoj-单调队列)
  6. vijos1056-图形面积【离散化】
  7. strip and linux lib compile
  8. 微信小程序开发实战基础一、页面跳转,底部导航栏,分享,加载图片标签,列表
  9. vs设计窗口不见了_碳纤维的巅峰:VS沛纳海616V3
  10. 利用圆解一元二次方程
  11. ZStack实践汇 | ZStack平台的使用心得
  12. android studio for android learning (十三) 一个简单的图片查看器示例
  13. 测试工程师六大能力模型
  14. navicat工具能安装在linux,linux下安装navicat
  15. 机械制图--零件图--过渡线
  16. IC面试数字电路基础
  17. the JDBC Driver has been forcibly unregistered问题解决
  18. 多副本和raid技术
  19. 1941. Scary Martian Word
  20. 讨厌google.cn怎么办?

热门文章

  1. linux在shell中获取时间
  2. Oracle查询重复数据并删除,只保留一条记录
  3. MySQL学习笔记(5)之数据定义类型
  4. shell第一天,添加普通帐号.
  5. LAMP平台部署及应用
  6. Outlook数据提取工具readpst
  7. PHP Shell生成工具Weevely
  8. 网站安全测试工具GoLismero
  9. 明明白白学C#0.1.2 什么是编程语言
  10. mysql延时优化教程_Slave延迟很大的优化方法总结(MySQL优化)