内容简介:开始想用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 镜像,有坑!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript
Douglas Crockford / Yahoo Press / 2008-5 / GBP 23.99
Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative b......一起来看看 《JavaScript》 这本书的介绍吧!