前言
昨天安装harbor进行镜像文件备份,做了很多定时任务下去,今天早上一起来重新登录的时候发现报错

以下是我的解决方法
一、查看日志
harbor 默认日志文件放在 /var/log/harbor 下

每一个服务都有一个日志文件
正常来说,我们能够打开 UI 界面,就说明大部分服务是没问题的,主要问题会出现在harbor-core, harbor-db, harbor-jobservice 这三个。
然后我分别查看了三者的日志,最后在 jobservice.log 的日志中发现了以下报错
bash
Feb 11 16:39:58 jobservice[85990]: 2026-02-11T16:39:58Z [INFO] [/controller/replication/transfer/image/transfer.go:297]: will retry 8s later
Feb 11 16:40:06 jobservice[85990]: 2026-02-11T16:40:06Z [INFO] [/controller/replication/transfer/image/transfer.go:289]: copying the blob sha256:cbb26815a162cd53311fbe68df13e4cb499fa9cdb5266e8a9654558dc72dbcae(the 4th running)...
Feb 11 16:51:29 jobservice[85990]: 2026-02-11T16:51:29Z [ERROR] [/controller/replication/transfer/image/transfer.go:395]: failed to pushing the blob sha256:568ee72b74354ff129972b4df22900d7426b444b54a7d5a559f61ea4643a14ed, size 1402807249: Put "http://core:8080/v2/base_deployment/rjgf/base_py_cv_env/blobs/uploads/2faf2282-7c3b-45ff-a00c-6c22c8e9d46c?_state=ERaz1UI5Xswm6OQZv9pO2AUw-yQWTFx6CxD_0KYT0BV7Ik5hbWUiOiJiYXNlX2RlcGxveW1lbnQvcmpnZi9iYXNlX3B5X2N2X2VudiIsIlVVSUQiOiIyZmFmMjI4Mi03YzNiLTQ1ZmYtYTAwYy02YzIyYzhlOWQ0NmMiLCJPZmZzZXQiOjAsIlN0YXJ0ZWRBdCI6IjIwMjYtMDItMTFUMTY6MjE6MjkuMTY2OTE1MDczWiJ9&digest=sha256%3A568ee72b74354ff129972b4df22900d7426b444b54a7d5a559f61ea4643a14ed": readfrom tcp 172.18.0.10:48040->172.18.0.8:8080: context deadline exceeded (Client.Timeout or context cancellation while reading body)
Feb 11 16:51:29 jobservice[85990]: 2026-02-11T16:51:29Z [INFO] [/controller/replication/transfer/image/transfer.go:297]: will retry 8s later
Feb 11 16:51:37 jobservice[85990]: 2026-02-11T16:51:37Z [INFO] [/controller/replication/transfer/image/transfer.go:289]: copying the blob sha256:568ee72b74354ff129972b4df22900d7426b444b54a7d5a559f61ea4643a14ed(the 4th running)...
Feb 11 16:54:39 jobservice[85990]: 2026-02-11T16:54:39Z [ERROR] [/controller/replication/transfer/image/transfer.go:395]: failed to pushing the blob sha256:4b9152282303d8d747de13441aa1342b69790cffac6b527ca7f9bba6a4c5d86e, size 1136013084: http status code: 500, body: {"errors":[{"code":"UNKNOWN","message":"unkn
二、分析
Harbor 的镜像复制(replication)任务在推送大尺寸镜像 blob 时,出现了网络读取超时和服务端 500 内部错误,这也是导致 Harbor 服务不稳定的重要原因。
错误信息解读
context deadline exceeded:jobservice 向 core 服务推送超大 blob(1.4GB/1.1GB)时,读取响应超时(默认超时时间不足以处理大文件传输);http status code: 500, body: {"errors":[{"code":"UNKNOWN"}]:core 服务处理 blob 推送时触发内部错误,属于服务端未捕获的异常(大概率和磁盘、资源、配置限制有关);- 日志中反复出现
will retry 8s later:系统在自动重试失败的复制任务,会持续占用服务器资源,加重服务负载。
然后我去看我的磁盘空间(这才注意到)

bro原来我的磁盘空间被拉满了,怪不得服务没有响应
三、解决
既然知道了空间被拉满了,那么接下来我们就要去清理掉一些不必要的镜像。
去到对应的放置镜像的位置(看你设置的位置)
我的是:/data/harbor/registry/docker/registry/v2/blobs/sha256/

你会看到这一串文件
这些 "奇奇怪怪" 的名字,其实是 Docker Registry v2(Harbor 底层依赖的镜像存储服务)采用的内容寻址存储(Content-Addressable Storage, CAS) 机制的体现。
1. 核心原理:内容寻址(CAS)
Docker Registry 不按 "镜像名" 存储文件,而是按内容的哈希值来存储。
- 每个镜像层(Layer)、镜像配置文件(Config)、镜像清单(Manifest)都会被计算出一个唯一的 SHA256 哈希值。
- 只要内容完全相同,哈希值就完全相同,因此相同的层只会存储一次,极大节省了存储空间。
- 这种方式确保了数据的完整性:下载时通过校验哈希,就能确认文件是否被篡改。
2. 目录结构解析
你看到的路径 /data/harbor/registry/docker/registry/v2/blobs/sha256 是 Harbor 存储镜像数据的核心目录,结构如下:
-
顶层目录 :
sha256表示所有存储对象的哈希算法是 SHA256。 -
二级子目录 (如
1a,1b,1f,20等)这些是哈希值的前两位字符。- 作用:避免单个目录下文件过多,提升文件系统性能。
- 例如,一个完整的哈希
sha256:1a2b3c...会被存放在sha256/1a/1a2b3c...目录下。
-
三级目录(完整哈希值)每个二级子目录下,是一个以完整哈希值命名的目录,里面存放着实际的二进制数据(即镜像层文件)。
3. 镜像的完整组成
一个完整的镜像在存储中由以下几部分组成:
- 镜像层(Blobs):就是你截图中看到的这些目录,包含了镜像的实际文件系统数据。
- 镜像清单(Manifest):一个 JSON 文件,也是一个 Blob,它列出了构成该镜像的所有层的哈希,以及镜像的配置信息。
- 标签(Tag) :在 Harbor 数据库中,将一个可读的名称(如
myimage:v1)映射到一个具体的 Manifest 哈希。
4. 安全清理的重要提醒
⚠️ 千万不要直接删除这些 sha256 目录下的文件!
- 这些 Blob 可能被多个镜像共享,直接删除会导致其他镜像损坏。
- 正确的做法是:
-
通过 Harbor Web UI 或 API 删除不再需要的镜像和标签。
-
执行 Harbor 的垃圾回收(Garbage Collection)命令,让系统自动清理那些没有被任何镜像或标签引用的 Blob:
bash# 停止 Harbor docker compose down # 执行垃圾回收 docker run -it --rm -v /data/harbor/registry:/registry goharbor/registry:v2.8.0 garbage-collect /etc/docker/registry/config.yml # 重启 Harbor docker compose up -d
-
不过还好,我这个只是为了测试一下harbor迁移的可行性,所以我直接就删除了一些文件(别学我),只是为了能登录进去就好了。
删除完文件之后,执行以下命令
bash
# 停止 Harbor
docker compose down
# 重启 Harbor
docker compose up -d
搞定可以登录进去了,这个时候如果大家想要用的话(如果你不是用安全的方法删除镜像文件,而是像我一样直接删除文件的话),最好就把全部镜像删除,重新从远程服务器的harbor上拉取镜像再备份一次。

四、其他错误
如果你的错误和我的不一样,但是登录的时候也是报的 服务错误的话,可以看看以下这个靓仔的文章:Harbor 核心服务不可用---故障排除_harbor核心服务不可用-CSDN博客
END
如果觉得这份基础知识点总结清晰,别忘了动动小手点个赞👍,再关注一下呀~ 后续还会分享更多有关开发问题的干货技巧,同时一起解锁更多好用的功能,少踩坑多提效!🥰 你的支持就是我更新的最大动力,咱们下次分享再见呀~🌟