1.搭建Docker私有仓库主要有以下几种方式
-
使用Docker官方提供的Registry镜像:Docker官方提供了一个用于构建私有镜像仓库的Registry镜像,只需将镜像下载并运行容器,然后暴露5000端口即可使用。可以通过修改Docker的配置文件daemon.json,在其中添加私有镜像仓库地址来实现。
-
在Docker官方网站中直接创建:在Docker的官方网站(https://hub.docker.com/)中,可以创建属于自己的账户,然后在Repository中创建自己的仓库。这种方式比较简单,但需要网络连接,且对于大规模使用可能存在一些限制。
-
使用第三方工具Harbor:Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,提供了丰富的功能,如用户管理、镜像复制、访问控制等。此外,它还提供了图形化界面,方便用户进行操作和管理。使用Harbor需要下载并安装,同时需要Docker Compose的支持。
-
自行搭建本地仓库:除了使用官方或第三方的工具外,还可以自行搭建本地仓库。这种方式需要一定的技术能力和资源投入,但可以根据实际需求进行定制和优化。自行搭建本地仓库时,可以考虑使用开源的镜像仓库软件,如Nexus Repository等。
经过审查和方便使用,决定使用第三方工具Harbor
2. Harbor 简介
2.1.什么是Harbor
Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务
Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能,同时还原生支持中文。
LDAP(Lightweight Directory Access Protocol)轻量级DAP协议
AD(Active Direcctory)是LDAP的实现。不仅实现了LDAP协议,还实现了具体应用(windows 域控)
公司内的各种人员账户,电脑打印机等设备管理是AD最常见的应用。可以将人员和设备加在活动目录里,对资源进行统一的管理。可以把公司分为多个域,每个域存储不同的信息,存储公司里各个资源的信息。
存储用户名密码
对外提供LDAP协议的身份认证——LDAP BIND
跟各种应用系统的统一集成
Harbor 的每个组件都是以 Docker 容器的形式构建的,使用 docker-compose 来对它进行部署。
用于部署 Harbor 的 docker-compose 模板位于 harbor/docker-compose.yml
2.2.Harbor的特性
-
基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限。
-
基于镜像的复制策略:镜像可以在多个Harbor实例之间进行复制(同步)。
-
支持 LDAP/AD:Harbor 可以集成企业内部已有的 AD/LDAP(类似数据库的一张表),用于对已经存在的用户认证和管理。
-
镜像删除和垃圾回收:镜像可以被删除,也可以回收镜像占用的空间。
-
图形化用户界面:用户可以通过浏览器来浏览,搜索镜像仓库以及对项目进行管理。
-
审计管理:所有针对镜 像仓库的操作都可以被记录追溯,用于审计管理。
-
支持 RESTful API:RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
-
Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。
2.3.组件架构图
Harbor在物理机上部署是非常难的,而为了简化Harbor的应用,Harbor官方直接把Harbor做成了在容器中运行的应用,而且这个容器在Harbor中依赖类似redis、mysql、pgsql等很多存储系统,所以它需要编排很多容器协同起来工作,因此VMWare Harbor在部署和使用时,需要借助于Docker的单机编排工具(Docker compose)来实现
3.部署Harbor
3.1. 从github上获取要安装的Harbor版本
Releases · goharbor/harbor · GitHub
也可以直接用wget工具拉取
wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v2.3.4.tgz
这是我已经下载好的Harbor二进制安装包,将包下载好了之后放到指定的目录下面
https://vws2gbhl02j.feishu.cn/wiki/XAUWwvTMiiX6zXk8rmIcS3RSnsh#FX3Gd3HpZoU4HQx5iRKcyZnsnze
tar -xzvf harbor-offline-installer-v2.3.4.tg -C /develop
3.2.修改harbor的配置文件
vim harbor.yml
将配置文件中的hostname配置成自己服务器的IP,以及需要暴露的端口然后设置仓库的初始登录密码,默认管理员用户是admin
这里是设置默认的数据卷存储位置
harbor仓库的默认访问方式是https,但是犹豫我们没有给Harbor仓库配置https证书,所以我们需要将文件中https的配置一栏注释
设置完成之后wq保存退出即可
3.3.配置docker默认访问方式为http模式
因为我们的harbor已经被我们设置成http模式 ,所以为了我们的docker能够和harbor仓库交互,我们需要将docker也设置成
打开/etc/docker/daemon.json添加如下配置
vim /etc/docker/daemon.json
{
"insecure-registries": ["0.0.0.0/0"]
}
#保存退出
#重启docker+
systemctl daemon-reload
systemctl restart docker
然后我们回到harbor仓库的目录下面执行脚本
./install.sh
因为harbor的tar包里已经自带docker-compose文件 所以 我们直接查看就行
docker compose ps -a
就能够看见我们的harbor容器已经启动
4.访问Harbor仓库web页面
这个时候我们访问刚才设置的IP端口就行
192.168.5.180.8066
到这里harbor仓库就已经搭建完成。