[TOC]
Harbor作为镜像仓库,主要的交互方式就是将镜像上传到Harbor上,以及从Harbor上下载指定镜像
在传输镜像前,可以先使用Harbor提供的权限管理,将项目设置为私有项目,并对不同用户设置不同角色,从而更方便管理镜像。
### harbor添加用户
* 创建用户
| 创建用户 |
| --- |
| ![](https://img.kancloud.cn/fd/89/fd8974b769affd8ccbbc4e9c54032cbb_1920x747.png)|
* 构建项目(设置为私有)
| 构建项目 |
| --- |
| ![](https://img.kancloud.cn/64/c0/64c078586785267355e81510c66b733f_1920x710.png)|
* 给项目追加用户
| 追加用户管理 |
| --- |
| ![](https://img.kancloud.cn/f6/d6/f6d6cd762ab145720f3a8460a3f3ad0f_1920x683.png) |
* 切换测试用户
| 切换测试用户 |
| --- |
| ![](https://img.kancloud.cn/ec/da/ecda664434f2da6f6149f54598759ef0_1920x725.png) |
### 发布镜像到Harbor
* 修改镜像名称
名称要求:harbor地址/项目名/镜像名:版本
| 修改镜像名称 |
| --- |
| ![](https://img.kancloud.cn/e1/59/e159763f8300698e4cfc935f2517a841_1654x414.png) |
* 修改daemon.json,支持Docker仓库,并重启Docker
| 修改daemon.json,支持Docker仓库 |
| --- |
| ![](https://img.kancloud.cn/d8/e8/d8e8ae4f8514d02a045763476078cc08_1656x136.png) |
* 设置登录仓库信息
~~~
docker login -u 用户名 -p 密码 Harbor地址
~~~
* 推送镜像到Harbor
| 推送镜像到Harbor |
| --- |
| ![](https://img.kancloud.cn/e6/ff/e6ff4c111e21d9e6a2dea684e8b3b855_1658x372.png) |
| ![](https://img.kancloud.cn/58/4a/584ac266564f0360295e80eb5828f8a8_1920x495.png) |
### 从Harbor拉取镜像ls
跟传统方式一样,不过需要先配置/etc/docker/daemon.json文件
~~~
{
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.11.11:80"]
}
~~~
| 拉取镜像 |
| --- |
| ![](https://img.kancloud.cn/bf/e9/bfe9c7cb02d4efcbdec78cd790215cb9_1658x121.png)|
### Jenkins容器使用宿主机Docker
构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。
设置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
~~~
### 添加构建操作
| 制作自定义镜像 |
| --- |
| ![](https://img.kancloud.cn/8f/67/8f67db03c2e867304aeb9cdefc52425f_1903x403.png)|
### 编写部署脚本
部署项目需要通过Publish Over SSH插件,让目标服务器执行命令。为了方便一次性实现拉取镜像和启动的命令,推荐采用脚本文件的方式。
添加脚本文件到目标服务器,再通过Publish Over SSH插件让目标服务器执行脚本即可。
* 编写脚本文件,添加到目标服务器
~~~
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 P@ssw0rd $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
~~~
| 如图 |
| --- |
| ![](https://img.kancloud.cn/56/13/5613afaefcb911ce337e30451ee7f377_455x98.png) |
### 配置构建后操作
| 执行脚本文件 |
| --- |
| ![](https://img.kancloud.cn/5e/7e/5e7ec1952eca8aca97d303e3636e90de_1917x972.png) |
- DevOps介绍
- 持续集成流程
- git工作流实践
- 新人准备git环境
- git工作流最佳实践
- jenkins基础入门
- jenkins简介
- jenkins安装(docker)
- 源码拉取
- maven构建
- 应用发布
- 结合gitlab版本管理
- jenkins-docker部署
- harbor镜像发布
- jenkins集成SonarQube
- SonarQube代码检测
- 集成SonarQube
- jenkins-pipeline
- 构建pipeline任务
- pipeline基础结构
- pipeline核心语法
- jenkinsfile构建
- 完整案例
- 整合钉钉发送通知
- 脚本使用凭证信息
- jenkins结合k8s使用
- k8s架构及基础概念
- k8s操作命令
- jenkins部署k8s
- 附录(其他未完成)
- jenkins高可用服务搭建
- gitlab-docker环境搭建
- 开发人员安装git
- JDK与maven
- docker安装gitlab
- docker安装
- docker-compose安装
- harbor安装
- SonarQube安装
- 2.暂时没写的内容
- 构建结果邮件发送
- 已有项目上传gitlab