docker- harbor私有仓库部署与管理

什么是 harbor

harbor是一个开源的云原生镜像仓库,它允许用户存储、签名、和分发docker镜像。可以将 harbor 看作是私有的docker hub ,它提供了更新安全性和控制性,让组织能够安全的存储和管理镜像

harbor RBAC(基于角色访问控制),可以对不同的用户和用户组进行领过全向控制,并且提供灵活的复制和同步策略,可以实现多个 harbor 实例的镜像复制和同步

Harbor的特性
  1. 基于角色控制

  2. 基于镜像的复制策略

  3. 支持 LDAP/AD

  4. 镜像删除和垃圾回收

  5. 图形化用户界面

  6. 审计管理

  7. 支持 restful API

docker Harbor核心组件
proxy

通过一个反向代理同意接受浏览器 docker客户端请求的,并且将请求转发给后端不同的服务,是一个方向海里组件

registry

发原则存储docker镜像 处理 docker pull/push 命令来上传和下载

core services

horbar的核心功能,包括 ui、oken、webhook

webhook:负责网站的一些服务功能

token:令牌 提供身份认证服务

ui:显示可视化界面

databases

为 core services 提供数据的服务 数据库记录镜像的元信息以及用户的身份信息

log collector

负责收集其他组件的一些日志,一共我们进行分析以及健康检查等

job services

只要做镜像物质,本地镜像可以同步到其它harbor私有仓库中

adminserver

主要是做一个后端配置数据管理者,没有太多功能

Docker-Harbor数据流向

docker私有仓库的过程:
  1. 所有的请求或热味的操作都会首先交给 proxy(反向代理)

  2. proxy 会先将请求转发给后端 core services

  3. core services包括 ui【web界面】、token【身份认证】、webhook【网站的一些服务功能 】

  4. 转发给 regiistry【镜像存储】,若需要下载镜像等权限操作,需要通过 core services中 token令牌的身份验证服务才行

  5. 每一次下载和上传 都会产生操作记录,生成日志 ,保存 databases中

  6. databases 记录保存镜像源信息以及用户与组身份 的信息,通过验证授权才能与允许相关操作

私有仓库指向私有仓库的方式有两种
1. /etc/dockerdaemon.josn
2. /usr/lib/systemd/system/docker.service
     添加: insecure-registrues   $harbor_ip (私有仓库的ip地址)
搭建本地私有仓库
#首先下载 registry 镜像
docker pull registry

#在 daemon.json 文件中添加私有镜像仓库地址
vim /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.86.44:5000"],						#添加,注意用逗号结尾
  "registry-mirrors": ["https://ae3f5qei.mirror.aliyuncs.com"]
}
systemctl restart docker.service

#运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest

#为镜像打标签
docker tag centos:7 192.168.86.44:5000/centos:v1

#上传到私有仓库
docker push 192.168.86.44:5000/centos:v1

#列出私有仓库的所有镜像
curl http://192.168.86.44:5000/v2/_catalog

#出私有仓库的 centos 镜像有哪些tag
curl http://192.168.86.44:5000/v2/centos/tags/list

#先删除原有的 centos 的镜像,再测试私有仓库下载
docker rmi -f 8652b9f0cb4c
docker pull 192.168.86.44:5000/centos:v1

部署 Docker-Compose 服务
1、下载或者上传 Docker-Compose
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

2、部署 Harbor 服务
(1)下载或上传 Harbor 安装程序
wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
(2)修改harbor安装的配置文件
vim /usr/local/harbor/harbor.cfg
--5行
hostname = 192.168.86.44
【修改,设置为Harbor服务器的IP地址或者域名】
---59行
admin/Harbor12345
harbor_admin_password = Harbor12345
【指定管理员的初始密码,默认的用户名/密码是】

3、 启动 Harbor
cd /usr/local/harbor/
在配置好了 harbor.cfg 之后,执行 ./prepare 命令,为 harbor 启动的容器生成一些必要的文件(环境)
再执行命令 ./install.sh 【先删除registry容器】以 pull 镜像并启动容器

4、查看 Harbor 启动镜像
cd /usr/local/harbor/
docker-compose ps
创建一个新项目
(1)浏览器访问:http://192.168.86.44 登录 Harbor WEB UI 界面,默认的管理员用户名和密码是 admin/Harbor12345

(2)输入用户名和密码登录界面后可以创建一个新项目。点击"+项目"按钮

(3)填写项目名称为"myproject-kgc",点击"确定"按钮,创建新项目

(4)此时可使用 Docker 命令在本地通过 127.0.0.1 来登录和推送镜像。默认情况下,Registry 服务器在端口 80 上侦听。
//登录 Harbor
docker login http://127.0.0.1
Useradd:admin
Password:Harbor12345

//下载镜像进行测试
docker pull nginx

//将镜像打标签
格式:docker tag 镜像:标签  仓库IP/项目名称/镜像名:标签
docker tag nginx:latest 127.0.0.1/ky30-kgc/nginx:v1

//上传镜像到 Harbor
docker push 127.0.0.1/ky30-kgc/nginx:v1

(5)在 Harbor 界面 myproject-kgc 目录下可看见此镜像及相关信息

相关推荐
小的~~2 分钟前
k8s使用本地docker私服启动自制的flink集群
docker·flink·kubernetes
pyliumy3 分钟前
rsync 全网备份
linux·运维·服务器
苹果醋324 分钟前
SpringCloud系列之一---搭建高可用的Eureka注册中心
运维·nginx
诚诚k30 分钟前
docker存储
运维·docker·容器
sorel_ferris33 分钟前
Ubuntu-24.04中Docker-Desktop无法启动
linux·ubuntu·docker
ggb199934 分钟前
【python的坑】vpn下,python request报错 check_hostname requires server_hostname
linux·运维·服务器
数据智能老司机1 小时前
Kubernetes从入门到精通系列——外部 DNS 和全局负载均衡
云原生·容器·kubernetes
-SGlow-1 小时前
Linux相关概念和重要知识点(4)(自举、vim)
linux·运维·vim
多多*1 小时前
OJ在线评测系统 登录页面开发 前端后端联调实现全栈开发
linux·服务器·前端·ubuntu·docker·前端框架
卑微的码蚁1 小时前
服务器相关问题
运维·服务器