Appearance

快速部署Docker镜像仓库Harbor

geekbing2024-02-06运维docker

简介

image-20240302163153153

Harboropen in new window(港口,港湾)是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器。

除了 Harbor 这个私有镜像仓库之外,还有 Docker 官方提供的 Registry。相对 Registry,Harbor 具有很多优势:

  • 提供分层传输机制,优化网络传输,Docker镜像是是分层的,如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的 UUID 为标识,确定传输的对象。

  • 提供WEB界面,优化用户体验,只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登录、搜索功能,包括区分公有、私有镜像。

  • 支持水平扩展集群,当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。

  • 良好的安全机制,企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。

操作步骤

当前以Linux环境为例,先安装 Dockeropen in new window

下载

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

解压

tar -zxvf harbor-offline-installer-v2.9.2.tgz

修改配置

cd harbor/
vim harbor.yml.tmpl

harbor2

修改完后将 harbor.yml.tmpl 保存为 harbor.yml

mv harbor.yml.tmpl harbor.yml

安装

./prepare
./install.sh

基本使用

访问地址:http://服务器ip:portopen in new window

默认的账号密码:admin/Harbor12345

img

创建项目

harbor5

创建用户

harbor6

项目分配用户

harbor7

harbor8

角色权限说明

角色权限说明
项目管理员拥有读写操作,同时拥有用户管理/镜像扫描等管理权限
维护人员对于指定项目拥有读写权限,创建 Webhooks
开发者对于指定项目拥有读写权限
访客对于指定项目拥有只读权限
受限访客只可以拉取项目,其他项目资源文件如log没有读权限

推送镜像

因为 docker 的 registry 服务默认为 https 请求,因为我们是局域网内部使用,所以添加一下配置就可以了,注:每台需要访问私有镜像仓库的都要配置

vim /etc/docker/daemon.json
# 在里面添加如下代码,保存退出
"insecure-registries":["192.168.3.82:8081"]
# 如果里面空的没有配置,配置如下
{"insecure-registries":["192.168.3.82:8081"]}
# 然后重新启动docker
systemctl daemon-reload && systemctl restart docker

推送测试

 # 拉取测试镜像
 docker pull hello-world
 # 为已存在镜像打标签,给一个标识对应镜像仓库所在位置,push时会上传到对应标识的服务上
 docker tag hello-world 192.168.3.82:8081/lunar_link/hello-world:1.0.0
 # 登录到harbor,格式:docker login -u 用户名 -p 密码 ip地址:端口
 docker login -u tester -p 123456 192.168.3.82:8081
 # 推送镜像
 docker push 192.168.3.82:8081/lunar_link/hello-world:1.0.0

推送成功,到 Harbor 查询

harbor9

拉取镜像

另外一台部署服务器,修改配置

vim /etc/docker/daemon.json
# 在里面添加如下代码,保存退出
"insecure-registries":["192.168.3.82:8081"]
# 如果里面空的没有配置,配置如下
{"insecure-registries":["192.168.3.82:8081"]}
# 然后重新启动docker
systemctl daemon-reload && systemctl restart docker

拉取镜像

docker pull 192.168.3.82:8081/lunar_link/hello-world:1.0.0
上次更新 3/31/2024, 6:29:32 AM