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

目录

一    Docker 私有仓库概念介绍

1,  Docker 私有仓库是什么

2,Docker 私有仓库  优势

二    搭建本地私有仓库

1, 首先下载 registry 镜像

2,在 daemon.json 文件中添加私有镜像仓库地址

3,重启docker

4,运行 registry 容器

4.1  启动容器

4.2 延伸 Docker容器的重启策略

5, 测试私有仓库的上传与下载

5,1 测试上传

5.2  测试下载

三     Harbor 简介

1, 什么是Harbor

2,harbor 与本地私有仓库 对比

Harbor的特点:

本地私有仓库(如Docker Registry)的特点:

3,Harbor的特性

4,Harbor的构成

4.1 Proxy

4.2 Registry

4.3   Core services

4.4  Database(harbor-db)

4.5  Job services

4.6 Log collector(harbor-log)

5,Harbor 的容器

6, Harbor 数据流向

四     搭建Harbor服务

1,部署 Docker-Compose 服务

2,部署 Harbor 服务

3, 修改harbor安装的配置文件

4, 启动 harbor

5, 查看docker-compose启动的  容器

6, 登录 Harbor WEB UI 界面

五   harbor 配置文件介绍

1,  所需参数

2,  可选参数

3, 更改  Harbor 将镜像存储

六    验证harbor 仓库的下载与上传

1, 验证下载镜像

2, 验证 上传

七,   在其他客户端上传镜像

1, 报错

2, 解决办法

3, 版本更迭

八    维护管理Harbor

1. 通过 Harbor Web 创建项目

2, harbor 容量

3,创建 Harbor 用户

3.1 创建用户并分配权限

3.2 添加项目成员

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

4,  查看日志

5,  修改 Harbor.cfg 配置文件

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

6.1 移除 Harbor 服务容器

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

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

九    总结


一    Docker 私有仓库概念介绍

1,  Docker 私有仓库是什么

Docker私有仓库是一种用于存储和分发Docker镜像的服务器服务,它允许组织在其内部网络中托管自己的Docker镜像集合,而不是依赖于公共的Docker镜像仓库,如Docker Hub

2,Docker 私有仓库  优势

  1. 安全性增强:对于包含敏感信息或专有软件的镜像,私有仓库提供了额外的安全层。组织可以控制访问权限,确保只有授权用户才能下载和推送镜像。

  2. 降低依赖风险:使用私有仓库,可以避免因公共仓库中的镜像被移除或更新而导致的依赖中断问题,确保持续且稳定的开发和部署环境。

  3. 性能优化:相比于从公网上的公共仓库拉取镜像,内部网络中的私有仓库可以提供更快的下载速度,减少网络延迟。

  4. 成本节约:对于频繁拉取大型镜像的情况,私有仓库可以减少对外部带宽的消耗,从而节省成本。

  5. 合规性要求:对于需要满足特定法规或内部政策的组织,私有仓库可以更好地实现镜像的审计、跟踪和管理,确保符合规定。

  6. 定制化管理:私有仓库如Harbor提供了额外的管理功能,如用户权限管理、镜像复制、访问控制策略等,便于企业级的镜像管理。

二    搭建本地私有仓库

1, 首先下载 registry 镜像

2,在 daemon.json 文件中添加私有镜像仓库地址

vim /etc/docker/daemon.json

{  "insecure-registries": ["192.168.217.77:5000"],                                               
  "registry-mirrors": ["https://ae3f5qei.mirror.aliyuncs.com"]
}

3,重启docker

4,运行 registry 容器

4.1  启动容器

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下来的镜像

4.2 延伸 Docker容器的重启策略

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

5, 测试私有仓库的上传与下载

5,1 测试上传

先生成一个新镜像

上传到私有仓库

列出私有仓库的所有镜像

[root@localhost ~]#curl http://192.168.217.77:5000/v2/centos/tags/list
{"name":"centos","tags":["v1"]}

------------------------------------------------------------------------
这条命令及其输出展示了使用curl工具向私有Docker registry(位于IP地址192.168.217.77,端口5000)发起HTTP GET请求的过程,目的是查询名为centos的镜像有哪些可用的标签(tags)。输出结果表明,centos镜像有一个名为v1的标签。

v2 指的是Docker registry的V2 API版本。
centos 是查询的镜像名称。
/tags/list 表示请求的是该镜像的所有标签列表。

5.2  测试下载

删除  所有centos 镜像

下载 私有仓库的centos 镜像

三     Harbor 简介

1, 什么是Harbor

Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。

Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP (身份认证系统)集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。

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

2,harbor 与本地私有仓库 对比

Harbor的特点:

  1. 企业级功能:Harbor提供了丰富的企业级特性,包括用户管理、权限控制(基于角色的访问控制RBAC)、镜像复制、镜像签名和扫描(查找镜像中的漏洞)、图形化用户界面(GUI)、日志审计等,这些都是基础Docker Registry所不具备的。

  2. 安全性:Harbor增强了安全性,支持镜像的加密存储、访问控制和安全扫描,有助于保护敏感数据和预防潜在的安全威胁。

  3. 易用性:Harbor提供了用户友好的Web界面,使得镜像的管理、用户权限分配、策略配置等工作变得直观且方便。

  4. 集成性:Harbor能够与现有的身份认证系统(如LDAP/AD)集成,便于在企业内部署时利用现有的用户管理体系。

  5. 高可用性:Harbor设计支持高可用部署,可以轻松地在多个节点上部署,确保服务的稳定性和可靠性。

本地私有仓库(如Docker Registry)的特点:

  1. 简单轻量:直接使用Docker Registry镜像搭建的私有仓库较为简单,资源占用少,适合小型团队或测试环境快速搭建。

  2. 基本功能:仅提供基本的镜像存储和拉取功能,不包含用户管理、权限控制等高级功能。适合对安全性和管理要求不高的场景。

  3. 配置灵活:虽然缺少预置的图形界面,但是高度可配置,可以根据需要调整存储后端、网络设置等。

  4. 维护成本:相对于Harbor,本地私有仓库的维护工作更多依赖手动配置和脚本,对于复杂的企业级需求来说,管理成本可能会增加。

3,Harbor的特性

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

4,Harbor的构成

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

4.1 Proxy

是一个 nginx 的前端代理,Harbor 的 Registry、UI、Token 服务等组件,都处在 nginx 反向代理后边。 该代理将来自浏览器、docker clients 的请求转发到后端不同的服务上
 

4.2 Registry

负责储存 Docker 镜像,并处理 Docker push/pull 命令。由于要对用户进行访问控制,即不同用户对 Docker 镜像 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的每次 Docker pull/push 请求都要携带一个合法的 Token, Registry 会通过公钥对 Token 进行解密验证。

    ### 使用 Docker Compose 部署 Harbor 私有仓库的最佳实践 #### 准备工作 为了成功部署 Harbor,确保环境已经准备好必要的组件和服务。这包括但不限于: - 安装并配置好 DockerDocker Compose[^5]。 对于 Docker Compose 的安装可以采用如下命令: ```bash curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ``` 确认 Docker 已经正常运行,并设置为开机自启: ```bash systemctl start docker systemctl enable docker.service docker version ``` #### 下载 Harbor 并准备 `docker-compose.yml` 文件 下载适合版本的 Harbor,在官网获取最新版链接后通过 wget 或 curl 命令下载压缩包到本地机器上解压即可获得所需的文件夹结构以及默认配置好的 `docker-compose.yml` 文件[^3]。 例如: ```bash wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz tar xvf harbor-offline-installer-v2.8.0.tgz cd harbor ``` #### 修改配置文件 进入解压后的目录找到 `harbor.yml.example` 复制一份命名为 `harbor.yml` ,按照实际需求编辑此 YAML 格式的配置文档来定制化 Harbor 实例的各项参数如域名、证书路径等信息[^1]。 #### 启动服务 当一切就绪之后就可以利用 Docker Compose 来一键启动整个应用栈了。只需在包含上述提到的那个特定 YML 文件所在的同一级目录下执行下面这条简单的指令就能完成全部操作: ```bash docker-compose up -d ``` 此时应该能看到一系列容器被创建出来并且开始运作起来,代表你的私有镜像库已经开始提供服务了。 #### 测试连接 最后一步就是验证新建立的服务能否正常使用。可以通过浏览器访问指定地址查看 Web UI 是否能够加载显示;也可以尝试推送测试镜像至新建实例中去检验其功能是否完备无误。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值