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

通过vagrant 安装

vagrant reload

下载Harbor

  • 选择目前最新版本1.5.2https://github.com/vmware/harbor/releases
    我选择的是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版本。

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

  1. 『中级篇』docker之CI/CD持续集成-项目生成镜像(76)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker之CI/CD持续集成-项目生成镜像(76) 开始想用docker registry做私有镜像库,后来放弃 ...

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

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

  3. docker build命令详解_『中级篇』docker之java容器运行外置springboot-jar(番外篇)(79)...

    学了docker这么久终于开始实战了,所有部署方式全部使用docker的方式感觉特别爽,我这里分享下,我部署springboot的富jar包. 下载java的镜像 docker pull java:o ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. go 通过nginx代理后获取用户ip
  2. c语言是一门对标识符大小写敏感的程序设计语言,《C语言程序设计》课程自测题...
  3. 4.9.3 方法注释
  4. 1048 采药 1049 装箱问题
  5. Cache一致性与2种基本写策略(1)
  6. 连接mongodb,kafka异步处理代码
  7. Android - Animation(二)
  8. swagger ui remove springboot paths
  9. Zabbix中文模式:图片下面的字符乱码
  10. pytorch 复制、粘贴、替换Model某一层的训练参数
  11. [转]你会做Web上的用户登录功能吗?
  12. “工业4.0”下的制造业数据化管理
  13. 【2022最新】Vscode配置Python环境Leetcode刷题指南
  14. 二叉树的非递归遍历 C++
  15. wireshark数据包分析 中职网络安全
  16. 高、低成本MEMS惯导系统姿态、位置、速度更新算法的对比
  17. Python之控制台版增删改查(电影院信息管理)
  18. 【PTA】【C语言】书香节
  19. 【干货】MySQL底层架构设计,你了解多少?
  20. QPrintPreviewDialog 打印预览使用实例

热门文章

  1. B树 B+树 B*树
  2. visual c++ 技术资料(网络收集)
  3. 挤拥城市游戏android,拥挤城市crowdcity
  4. 宁德技校学计算机报名,你知道现在宁德市师范学校计算机报2012年的考试开始报名了吗,怎样报名啊...
  5. 数学 —— 其他 —— 快速求逆平方根
  6. 信息学奥赛C++语言:奇数统计与输出
  7. 信息学奥赛一本通C++语言——1007:计算(a+b)×c的值
  8. python语言程序设计试卷西京学院_Python语言程序设计A-中国大学mooc-试题题目及答案...
  9. OpenGL:关于获取渲染结果的深度信息的问题(二)
  10. 笨方法“学习python笔记之关键字