手把手教你搭建 Docker 私有仓库 Harbor
1、什么是 Docker 私有仓库
Docker 私有仓库是用于存储和管理 Docker 镜像的私有存储库。Docker 默认会有一个公共的仓库 Docker Hub,而与 Docker Hub 不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部署在本地云环境中,用于组织内部开发、测试和生产环境中的容器镜像管理。保证数据安全性。
2、Docker 有哪些私有仓库
以下是一些常见的 Docker 私有仓库:
Harbor:作为一个企业级的 Docker Registry 服务,Harbor 提供了安全、可信赖的镜像存储和管理功能。它支持 RBAC 权限控制、镜像复制、镜像签名、漏洞扫描等功能。
Docker Trusted Registry (DTR):由 Docker 官方推出的企业级 Docker 私有仓库服务,与 Docker Engine 紧密集成,支持高度的安全性和可靠性。
Portus:一个开源的 Docker 镜像管理和认证服务,提供用户管理、团队管理、镜像审核等功能,与 Docker Registry 兼容。
Nexus Repository Manager:虽然主要是用于构建和管理 Java 组件,但也可以用作 Docker 私有仓库。它具有强大的存储管理和权限控制功能。
GitLab Container Registry:GitLab 集成了容器注册表功能,允许您存储、管理和分发 Docker 镜像。这是 GitLab 自带的功能,无需额外部署。
AWS Elastic Container Registry (ECR):如果使用 AWS 云服务,可以考虑使用 AWS ECR 作为私有仓库。它与 AWS 的其他服务集成紧密,对 AWS 用户来说是一个方便的选择。
本篇使用 Harbor 搭建 Docker 私有仓库。
3、Harbor 简介
Harbor 是一个开源的企业级 Docker Registry 服务,它提供了一个安全、可信赖的仓库来存储和管理 Docker 镜像。Harbor 翻译为中文名称为"庇护;居住;"。可以理解为是 Docker 镜像的"居住环境"或者是镜像的"庇护所"。Harbor 最初由 VMware 公司开发,旨在解决企业级 Docker 镜像管理的安全和可信任性问题。VMware 于 2016 年发布,在 2017 年,VMware 将 Harbor 开源,这使得更广泛的社区和组织可以自由地使用和贡献代码。Harbor 是一个成熟、功能丰富且安全可靠的企业级 Docker Registry 服务,为企业容器化应用的部署和管理提供了强大的支持。
Harbor 官网地址:Harbor (goharbor.io)
Github 开源地址:https://github.com/goharbor/harbor
4、Harbor 下载
4.1、通过 Linux 命令下载
4.2、GitHub 下载
下载地址:https://github.com/goharbor/harbor/releases 下载离线版本
![](https://static001.geekbang.org/infoq/97/9716d713d12715201b2c6a70511f88f9.png)
下载成功后,把包通过 xftp
上传到服务器。
4.3、解压
解压文件
5、启动 Harbor
5.1、修改配置文件
复制harbor.yml.tmpl
文件并重命名为harbor.yml
修改此配置文件,需要设置 hostname、端口、数据库密码等。
修改配置文件:
![](https://static001.geekbang.org/infoq/5b/5b256fd96aded718275192d92e0c8fbd.png)
5.2、启动
配置文件修改成功后,执行 install.sh
脚本进行安装 harbor
启动报错:
可以看到,该服务器安装的 docker
没有安装 docker-compose
插件
5.3、安装 docker-compose
进入docker-compose
官网下载执行文件,地址: https://github.com/docker/compose 下载成功后,把可执行文件加入Linux
系统命令目录
重命名:
授权:
执行命令查看是否安装成功:
如果需要卸载,直接删除即可:
5.4、再次启动
再次执行 ./install.sh
![](https://static001.geekbang.org/infoq/31/319d91fdaee6eb846eb39bf5184cb1dd.png)
提示安装成功。接下来就可以访问 Harbor 了。访问 IP+端口:http://192.168.42.133:5000
![](https://static001.geekbang.org/infoq/36/36f1bffb7fa7129da262b243d2cf3471.png)
访问成功,由于 Harbor 是通过 docker 管理的,所以启动非常方便。如果首页访问成功说明 Docker 私有仓库已经部署成功了。
6、Harbor Web 页面操作说明
默认用户名是 admin,密码是启动时设置的密码:AdminHarbor12345
![](https://static001.geekbang.org/infoq/06/06ef3becd7ba9b181a4bd7595bed2e2d.png)
登录成功进入主页面了。从系统首页可以看到系统分为三个菜单:项目、日志、系统管理。
6.1、项目
项目管理顾名思义就是用来管理项目的。可以为每一个开发项目创建一个私有项目库,然后把 Docker 镜像存储到指定的项目中,为每个项目实现项目镜像隔离。创建项目的时候,Harbor 提供了公开库(public repository)和私有库(private repository)两种类型的镜像存储空间。
![](https://static001.geekbang.org/infoq/e1/e19b6754e11012012e29c41f43bd373c.png)
通过详情信息可以看到:公开库中的镜像是对所有用户可见和可访问的,任何人都可以查看和拉取其中的镜像。而私有库中的镜像则需要登录才能访问控制,只有被授权的用户或团队才能够查看、拉取和推送镜像。 可以根据需要创建相关的项目。
![](https://static001.geekbang.org/infoq/84/84b76aa981398429e4f2ebf597e275c0.png)
项目创建成功后,可以点击进入项目。在里面可以为每个项目单独设置不同的配置信息。可以为每一个项目添加成员信息。
![](https://static001.geekbang.org/infoq/29/29043d6dfae3040c21d3edee3f5f7230.png)
角色权限说明:
项目管理员(Project Administrator):拥有项目的最高权限,可以对项目进行全面管理,包括创建和删除项目、管理项目成员和权限、配置项目属性、查看项目日志等。
维护人员(Maintainer):类似于项目管理员,但权限稍低,通常用于协助管理项目,可以进行项目的部分管理操作,如添加和删除镜像、配置镜像的复制和同步规则等。
开发者(Developer):具有对项目中镜像仓库的读写权限,可以拉取、推送和删除镜像,以及管理部分项目配置,但不能进行项目管理操作。
访客(Guest):只具有对项目中镜像仓库的只读权限,可以查看镜像和元数据,但无法对镜像进行修改或删除操作。通常用于分享项目或镜像给外部团队或用户。
受限访客(Restricted Guest):是一种更加受限的访客角色,通常用于提供给外部用户或系统,具有对项目中镜像仓库的只读权限,但可能会限制访问的部分内容或功能。
在右上角显示推送命令,可以通过提示命令进行 docker 镜像推送。
![](https://static001.geekbang.org/infoq/9b/9b146ac3f349b5884bf175ea11b0e1d1.png)
6.2、日志
日志菜单就是记录用户操作日志信息的。
![](https://static001.geekbang.org/infoq/3e/3e4779c3f03daf331874e658dda1a958.png)
6.3、系统管理
系统管理主要用来管理 Harbor 用户人员信息、镜像仓库的各种配置、权限和系统设置。
![](https://static001.geekbang.org/infoq/52/52f65a0491a6aa2f94f5b6dc48c0427f.png)
7、Docker 命令使用私有仓库
7.1、登录
首先登录私有仓库地址:
会报错:
docker 认为这个地址是不安全的,所以需要在 docker 守护进程配置文件中把该地址加入安全范围。
加入配置成功后,再次登录。
通过输出发现登录成功。认证信息存储在 ~/.docker/config.json
文件中,只要登录信息存在,登录会一直生效不需要每次推送拉取之前都登录。
7.2、推送
重新命名镜像名称
推送
查看 Harbor 仓库,推送成功。
![](https://static001.geekbang.org/infoq/96/969e126e9817462bb92d36fe8ea771e8.png)
7.3、拉取
通过另一台服务器,使用 docker pull
拉取镜像从私有仓库拉取镜像:
拉取成功
![](https://static001.geekbang.org/infoq/d3/d38c23d68fcca5c0d4d164f612958794.png)
查看下载数,发现已经更新了。
![](https://static001.geekbang.org/infoq/38/380cd70d95e0cf8d65d6623cd5c385bf.png)
8、总结
关于使用 Harbor 搭建 Docker 私有仓库就介绍完毕了,如果大家有兴趣可以查看一下其他搭建方式,然后在它们之间进行对比一下看看那种方式更适合。本篇为入门级 Harbor 的基础使用,其他功能可以自行研究。
文章转载自:sowler
评论