Docker容器:Docker-harbor 私有仓库的部署与管理

目录

一、Docker原生私有仓库  Registry

1、搭建本地私有仓库

1.1、下载 Registry 镜像

1.2、添加本地私有仓库配置

1.3、运行 Registry 容器

1.4、上传镜像到本地私有仓库

二、Harbor 概述

1、Harbor 概念

2、Harbor 的特性

3、Harbor 的构成

4、Harbor 私有仓库工作过程

三、部署 docker-harbor 私有仓库

1、环境部署

2、安装 Docker-Compose 服务

3、部署 Harbor 服务

3.1、下载或上传 Harbor 安装程序

3.2、修改 harbor 安装的配置文件

4、启动 Harbor

5、查看 Harbor 启动镜像

6、创建一个新项目

7、在其他客户端上传镜像

四、维护管理 Harbor 

1、通过 Harbor Web 创建项目

2、创建 Harbor 用户

2.1、创建用户并分配权限

2.2、添加项目成员

2.3、在客户端上使用普通账户操作镜像

3、日志查看

4、修改 Harbor.cfg 配置文件

5、移除 Harbor 服务容器同时保留镜像数据/数据库,并进行迁移

5.1、移除 harbor 服务容器

5.2、把项目中的镜像数据进行打包

 6、如需重新部署,需要移除 Harbor 服务容器全部数据


一、Docker原生私有仓库  Registry

1、搭建本地私有仓库

1.1、下载 Registry 镜像

#首先下载 registry 镜像
docker pull registry
 
#查看当前所有镜像
docker images

1.2、添加本地私有仓库配置

前提:获取镜像加速器

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

#在 daemon.json 文件中添加私有镜像仓库地址
vim /etc/docker/daemon.json
{
    "insecure-registries": ["172.16.88.66:5000"], 
    "registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}

 
systemctl restart docker.service  #重启docker服务,使修改的配置生效

1.3、运行 Registry 容器

#运行 registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
 
#-itd:在容器中打开一个伪终端进行交互操作,并在后台运行
#-v:把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
#-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
#--restart=always:这是重启的策略,在容器退出时总是重启容器
#--name registry:创建容器命名为registry
#registry:latest:这个是刚才pull下来的镜像
 
docker ps    #查看当前正在运行的容器

Docker容器的重启策略如下:
no:默认策略,在容器退出时不重启容器
on-failure:在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3 :在容器非正常退出时重启容器,最多重启3次
always:在容器退出时总是重启容器
unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器 。

1.4、上传镜像到本地私有仓库

(1)拉取nginx镜像并为该镜像打新标签

#下载nginx镜像
docker pull nginx
 
#为该镜像添加新的标签
docker tag nginx:latest 172.16.88.66:5000/nginx:v1
# 172.16.88.66:5000/centos:v1: 这是新的标签,它包含了两部分信息。172.16.88.66:5000 是 Registry 的地址,表示你要将这个镜像推送到指定的 Registry。nginx:v1 则是新的标签,表示将原本的 nginx:latest 镜像打上一个新的标签为 nginx:v1。
 
#查看所有的镜像
docker images

(2)上传至私有仓库

#将本地的镜像 172.16.88.66:5000/nginx:v1 推送(上传)到 Registry 地址 172.16.88.66:5000 中
docker push 172.16.88.66:5000/nginx:v1

(3)列出私有仓库的所有镜像

# v2/_catalog API 端点是 Docker Registry 提供的一个用于获取仓库列表的接口,帮助用户更好地管理和组织他们的容器镜像
curl http://172.16.88.66:5000/v2/_catalog

(4)列出私有仓库的 nginx 镜像的所有 tag

#获取指定镜像 nginx 在 Registry 中的所有标签(tags)列表
curl http://172.16.88.66:5000/v2/nginx/tags/list

(5)验证私有仓库功能

先删除原有的 nginx:v1 的镜像,再测试从私有仓库下载

#删除原有的 nginx:v1 的镜像
docker rmi 172.16.88.66:5000/nginx:v1 
#查看当前所有镜像,即查看nginx:v1镜像是否存在
docker images
 
#从私有仓库下载 nginx:v1 镜像
docker pull 172.16.88.66:5000/nginx:v1
#查看当前所有镜像,即查看nginx:v1镜像是否存在
docker images

二、Harbor 概述

1、Harbor 概念

  • Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务
  • Harbor 以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文

注:

AD:提供了集中式的身份管理服务,允许管理员在一个集中的数据库中管理用户、计算机和其他资源,同时提供了访问控制和安全性功能
LDAP:轻量级的数据库,是一个开放的标准协议,用于在网络上访问和管理分布式目录信息,通常用于实现用户身份验证、授权和其他目录服务

  • Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml。

2、Harbor 的特性

  • 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限
  • 基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)
  • 支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理
  • 镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间
  • 图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理
  • 审计管理:所有针对镜 像仓库的操作都可以被记录追溯,用于审计管理
  • 支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易
  • Harbor 和 docker registry 的关系:Harbor实质上是对 docker registry 做了封装,扩展了自己的业务模板

3、Harbor 的构成

Harbor 在架构上主要有 Proxy、Registry、Core services、Database(Harbor-db)、Log collector(Harbor-log)、Job services 六个组件

① Proxy

反向代理,通过一个前置的发现代理统一接收浏览器、docker 客户端的请求转发给后端的不同的服务

② Registry

负责存储 docker 镜像,处理 docker pull/push 命令来做上传/下载

③ Core services

Harbor 的核心功能,包括:

ui:提供图像界面

webhook:网站一些服务功能(通知机制)

token:令牌,提供身份验证服务

④ Log collector(Harbor-log)

负责日志(其他的组件日志,上传下载、用户访问等)收集以供后期进行分析和健康检查等

⑤ Database(Harbor-db)

为核心组件提供数据库服务,主要记录数据库镜像的元信息,以及用户的身份信息

⑥ Job services

主要用于镜像复制,本地镜像可以被同步到远程 Harbor 实例上

⑦ adminserver

管理员用于管理用户操作以及身份认证等

认证方式:

  • 扩展认证:通常指的是使用外部身份验证系统(比如 LDAP、AD 等)来进行用户身份验证
  • 令牌认证:是一种基于令牌(Token)的身份验证方式
  • 用户密码认证:用户需要提供其用户名和密码来验证身份
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值