当前位置:网站首页>Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor
Open Source Summer | [Cloud Native] DevOps (5): Integrating Harbor
2022-08-02 20:32:00 【InfoQ】

前言:
一、Harbor介绍
二、 Harbor安装
- 下载Harbor安装包:https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz
- 拖拽到Linux并解压:
tar -zxvf harbor-offline-installer-v2.3.4.tgz -C /usr/local/
- 修改Harbor配置文件:
- 首先复制一份harbor.yml配置
cp harbor.yml.tmpl harbor.yml
- 编辑harbor.yml配置文件
- 启动Harbor
./install.sh
- 登录Harbor
- 首页信息
三、 Harbor使用方式
1. 添加用户构建项目
- 创建用户
- 构建项目(设置为私有)
- 给项目追加用户
- 切换测试用户
2. 发布镜像到Harbor
- 修改镜像名称
- 名称要求:harbor地址/项目名/镜像名:版本
- 修改daemon.json,支持Docker仓库,并重启Docker
- 设置登录仓库信息
docker login -u 用户名 -p 密码 Harbor地址
- 推送镜像到Harbor
- |
3. 从Harbor拉取镜像ls
{
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.11.11:80"]
}

4. Jenkins容器使用宿主机Docker
- 设置宿主机docker.sock权限:
sudo chown root:root /var/run/docker.sock
sudo chmod o+rw /var/run/docker.sock
- 添加数据卷
version: "3.1"
services:
jenkins:
image: jenkins/jenkins
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- ./data/:/var/jenkins_home/
- /usr/bin/docker:/usr/bin/docker
- /var/run/docker.sock:/var/run/docker.sock
- /etc/docker/daemon.json:/etc/docker/daemon.json
5. 添加构建操作
6. 编写部署脚本
- 编写脚本文件,添加到目标服务器
harbor_url=$1
harbor_project_name=$2
project_name=$3
tag=$4
port=$5
imageName=$harbor_url/$harbor_project_name/$project_name:$tag
containerId=`docker ps -a | grep ${project_name} | awk '{print $1}'`
if [ "$containerId" != "" ] ; then
docker stop $containerId
docker rm $containerId
echo "Delete Container Success"
fi
imageId=`docker images | grep ${project_name} | awk '{print $3}'`
if [ "$imageId" != "" ] ; then
docker rmi -f $imageId
echo "Delete Image Success"
fi
docker login -u DevOps -p [email protected] $harbor_url
docker pull $imageName
docker run -d -p $port:$port --name $project_name $imageName
echo "Start Container Success"
echo $project_name
chmod a+x deploy.sh
7. 配置构建后操作
边栏推荐
- Local broadcast MSE fragments mp4 service
- Remember the stuck analysis of an industrial automation control system in .NET
- 今年上半年,我国公路建设总体形势持续向好
- MySQL基本语法
- golang刷leetcode 经典(4) 实现跳表
- ES: Promise的基本用法
- The days of patching are more difficult than the days of writing code
- 宝塔搭建实测-基于ThinkPHP5.1的wms进销存源码
- 我的递归从不爆栈
- golang源码分析(4):select
猜你喜欢
动力电池扩产潮,宁德时代遭围剿
NeRF: The Secret of 3D Reconstruction Technology in the Popular Scientific Research Circle
谁抢走了华大基因的生意?
【案例】2D变换-旋转动画
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Works (7) Mid-term Inspection Report
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Work (5) Task Book
golang学习之七:并发编程基础(goroutine、channel、select)
IReport常见问题及处理方法
NeRF:火爆科研圈的三维重建技术大揭秘
Security First: Tools You Need to Know to Implement DevSecOps Best Practices
随机推荐
小程序毕设作品之微信体育馆预约小程序毕业设计成品(7)中期检查报告
创新云集技术咖,工赋汇聚实战派:2022工赋开发者峰会
【秒杀办法】根据二叉树的先序遍历、中序遍历、后序遍历快速创建二叉树
百问百答第49期:极客有约——国内可观测领域SaaS产品的发展前景
全面认识二极管,一篇文章就够了
暴跌99.7%后,谁还在买卖「二舅币」?
基于HDF的LED驱动程序开发(1)
Flink Learning 9: Configure the idea to develop the flink-Scala program environment
IReport常见问题及处理方法
Go编译原理系列6(类型检查)
如何减轻企业账户被劫持的攻击?
Navicat 连接Oracle时提示oracle library is not loaded的问题解决
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Works Mini Program Graduation Design Finished Work (6) Question Opening Reply PPT
ffmpeg编译后找不到libx264
新特性解读 | MySQL 8.0 GIPK 不可见主键
redis总结_基础
企业云成本管控,你真的做对了吗?
Google Earth Engine APP—— 一个不用写代码可以直接下载相应区域的1984-2021年的GIF遥感影像动态图
玩转云端 | 天翼云对象存储ZOS高可用的关键技术揭秘
php弱类型-攻防世界lottery