企业级私有docker镜像仓库Harbor的搭建和使用

文章目录

一、什么是Harbor

简单来说,Harbor 是一个开源的企业级私有 Docker 镜像仓库服务。我们可以把它理解成一个 "私有的、安全的、功能强大的 Docker Hub"。

  • 私有: 它部署在你自己的基础设施(如公司的数据中心或私有云)上,你完全掌控其中的所有镜像,不对外公开。
  • 企业级: 这意味着它不仅仅是一个简单的存储服务器。它提供了企业所需的高级功能,如权限控制、安全扫描、镜像复制、图形化操作界面等。
  • 镜像仓库: 它是专门用来存储、管理和分发 Docker 镜像的地方。你可以向 Harbor 中推送(上传)镜像,也可以从 Harbor 中拉取(下载)镜像。

目前国内的上网环境公共的Docker Hub不能直接访问了,对于公司和个人开发者来说有必要搭建私有的Docker镜像仓库,使用 Harbor 几乎是必须的。公司自己开发的应用程序镜像可能包含敏感代码和配置,绝不能放到公共仓库。Harbor 提供了一个安全的私有环境来存放这些资产。Harbor 可以配置为 Docker Hub、Google Container Registry(GCR)等公有仓库的代理缓存。当公司内第一个开发者拉取某个公有镜像(如 nginx:latest)时,Harbor 会从公网下载并缓存到本地。后续所有开发者再拉取这个镜像时,都会直接从内网的 Harbor 服务器高速获取,极大地节省了公网带宽,加快了拉取速度。

Harbor 将一个简单的镜像存储服务,升级为一个安全、高效、可靠的企业级镜像生命周期管理平台,是现代云原生应用开发和运维不可或缺的基础设施组件。

本文介绍如何通过Harbor搭建和使用自己的私有镜像仓库。

二、安装Harbor

准备一台linux的服务器,我这里是ubuntu 24.04 IP地址是192.168.0.49

Harbor的docker安装要求

On a Linux host: docker 20.10.10-ce+ and docker-compose 1.18.0+ .

1、安装docker

执行以下命令一键安装docker

bash 复制代码
sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
service docker start

配置国内镜像加速

bash 复制代码
vim /etc/docker/daemon.json
bash 复制代码
{
    "registry-mirrors": [
        "https://docker.1ms.run"
    ]
}
bash 复制代码
service docker restart

2、安装Harbor

下载harbor安装包,下载地址如下:

https://github.com/goharbor/harbor/releases/download/v2.14.1/harbor-offline-installer-v2.14.1.tgz

将下载的harbor安装包上传到安装harbor的目标服务器的目录下

如/home/app/harbor

解压上传的harbor安装包

bash 复制代码
tar -zxvf harbor-offline-installer-v2.14.1.tgz

备份配置文件

bash 复制代码
cp harbor.yml.tmpl harbor.yml

修改配置文件

bash 复制代码
vim harbor.yml

执行安装脚本

bash 复制代码
./install.sh

安装完成后通过浏览器即可以访问harbor的管理界面

![harbor登录界面]](https://i-blog.csdnimg.cn/direct/f4758ac608e64efa8370b1dc9d2faf82.png)

默认的用户名和密码是admin/Harbor12345

三、使用Harbor

1、通过Harbor代理拉取镜像

先在仓库管理中建一个目标,目标是从docker的加速镜像站点去拉取镜像,我这里配置目标URL是https://docker.1ms.run,点击测试链接,提示"测试连接成功"表示目标URL站点没有问题,就可以点击确定。

这样我们就有了一个目标的加速仓库

在"项目"中点击"新建项目",在镜像代理中开启 "镜像代理",选择我们开始在仓库管理中新建的目标仓库。

在配置管理生成软件物料清单中勾选"在推送镜像时自动生成软件物料清单",这样我们在拉取镜像时harbor会自动帮我们缓存镜像到本地的harbor仓库,下次拉取时速度就非常快了。

在另外一台需要拉取镜像的机器上配置docker的镜像仓库,将地址配置为Harbor的地址

bash 复制代码
vim /etc/docker/daemon.json
bash 复制代码
{
    "registry-mirrors": [
        "http://192.168.0.49"
    ],
    "insecure-registries": ["192.168.0.49"]
}

重启docker服务

bash 复制代码
service docker restart

拉取目标镜像,这里要带上harbor中的项目名称,docker1ms/nginx:1.22

bash 复制代码
docker pull docker1ms/nginx:1.22

在harbor的管理界面可以看到,通过拉取镜像,harbor通过代理镜像源对镜像进行了拉取并缓存到harbor仓库,下次拉取速度更快了。

2、上传镜像到Harbor仓库

另一个在工作中最常用的场景就是将自己的镜像上传到镜像仓库,以便其他人拉取使用。

下面就以在本地已经存在的docker1ms/busybox:latest为例,上传到自己的harbor仓库。

我的harbor仓库的地址是192.168.0.49,上传到默认的library项目中

为镜像打上带仓库地址和项目名的tag

bash 复制代码
docker tag docker1ms/busybox:latest 192.168.0.49/library/busybox:latest 

客户端登录到harbor

bash 复制代码
docker login 192.168.0.49 

输入harbor的用户名和口令进行登录

登录成功后,通过push命令上传镜像到本地harbor仓库

bash 复制代码
docker push 192.168.0.49/library/busybox:latest

到harbor管理界面查看push到仓库中的镜像

可以看到busybox镜像已经成功push到harbor的library项目中了。

在Artifacts中可以看到push上来的镜像物料详情,可看到这个busybox镜像的大小是2.1MB

我们可以直接拉取harbor中我们刚push上去的镜像

可以看到如果是默认仓库library项目直接可以docker pull 镜像名就可以拉取

bash 复制代码
docker pull busybox:latest 

至此,我们通过安装自己私有的镜像仓库Harbor,实现了docker镜像代理下载和上传自己的镜像到Harbor仓库,覆盖了我们平时工作中的大部分场景。


作者博客:http://xiejava.ishareread.com/

相关推荐
Leinwin3 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382503 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇3 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7593 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣3 小时前
智能体选型实战指南
运维·人工智能
yy55273 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔6 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密6 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20156 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑