内容简介:开始想用docker registry做私有镜像库,后来放弃了,知道的老铁应该知道这个玩意没有界面很不爽,后来选择了Harbor,还是通过vagrant 创建一个虚拟服务器,这样下来一共创建3个了,也就在生产环境下估计需要3个以上才可以完成整个的CICD持续化集成。前期的3个要求都是4g双核的,gitlab,gitlabci,Harbor 都是这样要求的。我的电脑i7处理器,16g内存让老铁看看跑起来后的效果。源码:https://github.com/limingios/docker/tree/mast
开始想用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.2
https://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 - 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
这个执行后,就会自动进行pipline操作,然后通过merge到master分支
.
pipline 执行通过后,可以进行merge到master分支
合并到master分支,会自动触发pipline,多执行deploy操作
-
如果我们想已经到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
- 进入harbor看看
PS:实际上这个例子,就是特定版本的docker image的产生。一个版本的发布代表我们这个软件的稳定的版本的问世,接下来就可以进行对稳定版本的部署,我们对稳定版本的部署,稳定版本的部署具体是docker swarm还是k8s,最重要的是我们已经有了一个docker image,我们可以通过手动,或者自动的升级。update docker image 实现服务的不中断。
总体言之这几次的流程是:开发代码提交到分支后,分支下进行校验pipline,没有问题,进行deploy的,在deploy测试没有问题,打包tag,形成稳定的dockerimage版本。
>>原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
>>原文链接地址:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 生成DOCKER图片镜像
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- KVM镜像制作及挂载镜像文件
- 查看Docker镜像仓库中镜像的所有标签
- Vagrant 使用国内镜像安装插件和 box 镜像
- 不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Developer's Guide to Social Programming
Mark D. Hawker / Addison-Wesley Professional / 2010-8-25 / USD 39.99
In The Developer's Guide to Social Programming, Mark Hawker shows developers how to build applications that integrate with the major social networking sites. Unlike competitive books that focus on a s......一起来看看 《Developer's Guide to Social Programming》 这本书的介绍吧!