『中级篇』docker之CI/CD持续集成-项目生成镜像(76)
admin
2023-04-11 12:43:57
0

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

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

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

通过vagrant 安装

vagrant reload

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

下载Harbor

  • 选择目前最新版本1.5.2
    https://github.com/vmware/harbor/releases
    我选择的是online版本,两种版本基本上差不多。 
    sudo yum -y install lrzsz
    #在windows下载的1.5.2 online 上传上去
    rz

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

  • 解压harbor

    tar xvf harbor-online-installer-v1.5.2.tgz
  • 安装

    cd harbor
    sudo ./install.sh

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

  • 需要换成另外一种安装方法。

    sudo ./prepare

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

  • 真正的安装
    sudo docker-compose up -d

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

安装成功

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

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

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

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

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

停止

sudo docker-compose stop

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

启动

sudo docker-compose start

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

测试harbor

  • 启动服务

    sudo serivce docker restart
    cd harbor
    sudo docker-compose start

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

  • 修改参数

    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“文件。在文件中写入

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

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

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

push 镜像试试

  • 新建用户

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

  • 新建项目

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

#这个错误,就是未建立项目。
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

![](https://upload-images.jianshu.io/upload_images/11223715-32e7643aa5456e78.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/11223715-ce7f8cda9277c2ac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/11223715-c64af22cd5f5b5fb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/11223715-1dd1da248f4d736b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

### 远程连接harbor
* 查找Docker的服务文件:登录到已经安装Docker的服务器,输入 systemctl status docker 查看Docker的service文件。

``` bash
sudo systemctl status docker

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

  • 编辑docker.service文件:在ExecStart处添加 –insecure-registry 参数。

    sudo vi /usr/lib/systemd/system/docker.service

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

  • 重新加载service文件,重启docker服务。
    sudo systemctl daemon-reload
    sudo systemctl restart docker

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

  • 尝试远程登录
    sudo docker login http://172.28.128.6 -u admin -p Harbor12345

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

gitlab gitlab-ci harbor

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

  • 修改 .gitlab-ci.yml

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

stages:
  - style
  - test
  - deploy
  - release

pep8:
  stage: style
  script:
    - pip install tox
    - tox -e pep8
  tags:
    - python2.7

unittest-py27:
   stage: test
   script:
     - pip install tox
     - tox -e py27
   tags:
     - python2.7

unittest-py34:
   stage: test
   script:
     - pip install tox
     - tox -e py34
   tags:
     - python3/4

docker-deploy:
   stage: deploy
   script:
     - 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-demo
   tags:
     - test1
   only:
     - master
docker-image-release:
   stage: release
   script:
     - 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_TAG
   tags:
     - test1
   only:
     - tags

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

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

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

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

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

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

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

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

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

stages:
  - style
  - test
  - deploy
  - release

pep8:
  stage: style
  script:
    - pip install tox
    - tox -e pep8
  tags:
    - python2.7
  except:
    - tags

unittest-py27:
   stage: test
   script:
     - pip install tox
     - tox -e py27
   tags:
     - python2.7
   except:
     - tags

unittest-py34:
   stage: test
   script:
     - pip install tox
     - tox -e py34
   tags:
     - python3/4
   except:
     - tags

docker-deploy:
   stage: deploy
   script:
     - 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-demo
   tags:
     - test1
   only:
     - master

docker-image-release:
   stage: release
   script:
     - 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_TAG
   tags:
     - test1
   only:
     - tags
  • 新建tag

    New tag

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

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

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

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

  • 进入harbor看看

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

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

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

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

相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...