继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

慕标5832272
关注TA
已关注
手记 1071
粉丝 228
获赞 996

webp

通过vagrant 安装

vagrant reload

webp

下载Harbor

sudo yum -y install lrzsz#在windows下载的1.5.2 online 上传上去rz

webp

  • 解压harbor

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

cd harbor
sudo ./install.sh

webp

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

sudo ./prepare

webp

  • 真正的安装

sudo docker-compose up -d

webp

安装成功

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

webp

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

webp

webp

停止

sudo docker-compose stop

webp

启动

sudo docker-compose start

webp

测试harbor

  • 启动服务

sudo serivce docker restartcd harbor
sudo docker-compose start

webp

  • 修改参数

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

webp

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

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

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

webp

push 镜像试试

  • 新建用户

webp

  • 新建项目

webp

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

webp

webp

webp

webp

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

远程连接harbor

  • 查找Docker的服务文件:登录到已经安装Docker的服务器,输入 systemctl status docker 查看Docker的service文件。

sudo systemctl status docker

webp

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

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

webp

  • 重新加载service文件,重启docker服务。

sudo systemctl daemon-reload
sudo systemctl restart docker

webp

  • 尝试远程登录

sudo docker login http://172.28.128.6 -u admin -p Harbor12345

webp

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

webp

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

webp



作者:IT人故事会
链接:https://www.jianshu.com/p/d257d5a009d4


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP