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 目录下可看见此镜像及相关信息

相关推荐
大秦王多鱼1 小时前
Kafka ACL(访问控制列表)介绍
运维·分布式·安全·kafka·apache
烛.照1031 小时前
docker安装emqx
docker·容器·emqx
曾经的三心草2 小时前
小程序项目-购物-首页与准备
运维·服务器·小程序·项目·购物
蓝染k9z4 小时前
在Ubuntu上使用Docker部署DeepSeek
linux·人工智能·ubuntu·docker·deepseek+
苏-言4 小时前
Linux环境下的Java项目部署技巧:安装 Mysql
linux·运维·mysql
张文君5 小时前
docker直接运行arm下的docker
arm开发·docker·容器
lljss20205 小时前
在 WSL2 中重启 Ubuntu 实例
linux·运维·ubuntu
对你无可奈何6 小时前
从Proxmox VE开始:安装与配置指南
运维·服务器·devops
Linux运维老纪6 小时前
K8s之Service详解(Detailed Explanation of K8s Service)
服务器·网络·云原生·容器·kubernetes·云计算·运维开发
月上柳青7 小时前
docker gitlab arm64 版本安装部署
docker·容器·gitlab