NAS私有Registry仓库搭建:Harbor镜像仓库的Docker化部署与高可用配置

当你在NAS上运行越来越多的Docker服务时,会发现镜像管理变得越来越混乱。公共仓库pull速度慢、版本记录不清晰、无法管理团队权限……这些问题都在呼唤一个专业的私有镜像仓库解决方案。Harbor正是CNCF毕业的项目,作为企业级Docker Registry,为NAS用户提供了强大的镜像管理能力。

Harbor的核心价值:为什么需要私有Registry

公有Docker Hub虽然方便,但存在几个明显局限:网络延迟影响pull速度、无法确保镜像安全合规、缺乏完整的版本管理和访问控制。对于在NAS上部署关键服务的用户来说,Harbor解决了这些痛点。

Harbor提供了镜像签名和内容信任机制,确保只有经过授权的镜像才能被部署。它还支持漏洞扫描、角色权限管理、镜像复制等企业级功能。更重要的是,所有这些都运行在你自己的NAS上,数据完全自主可控。

快速部署Harbor到NAS

Harbor官方提供docker-compose部署方式,非常适合NAS环境。首先下载Harbor安装包:

wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz
tar xvf harbor-online-installer-v2.10.0.tgz
cd harbor

配置docker-compose.yml,设置管理员密码和域名:

hostname: nas.yourdomain.com
http:
  port: 8888
harbor_admin_password: YourStrongPassword
database:
  password: database_password
  max_idle_conns: 50
  conn_max_lifetime: 14400m
  conn_max_idle_time: 0
data_volume: /volume1/data/harbor
jobservice:
  job_worker_max: 10
trivy:
  ignore_unfixed: false
  offline_scan: false
  security_charts_migration: true
proxy:
  no_proxy: harbor-core,harbor-jobservice,harbor-registry,harbor-portal,harbor-db,redis,trivy

然后执行安装:

sudo ./install.sh --with-notary --with-trivy --with-chartmuseum

这会启动Harbor的所有组件,包括核心服务、PostgreSQL数据库、Redis缓存、Notary内容信任服务以及Trivy漏洞扫描器。

使用Harbor管理NAS上的Docker镜像

部署完成后,通过浏览器访问 http://your-nas-ip:8888,使用admin账户登录。进入"新建项目"创建私有仓库:

为NAS上的每个服务类型创建独立项目,如docker-registry(通用镜像)、home-automation(智能家居)等。在项目中你可以设置仓库可见性、配置Webhook、甚至开启自动镜像复制到其他Harbor实例。

在NAS的Docker守护进程中配置Harbor作为默认仓库:

# /etc/docker/daemon.json
{
  "registry-mirrors": [],
  "insecure-registries": ["nas.yourdomain.com:8888"],
  "registry-mirrors": ["http://nas.yourdomain.com:8888"]
}

sudo systemctl restart docker

现在就可以push镜像到私有仓库了:

docker tag myapp:latest nas.yourdomain.com/docker-registry/myapp:latest
docker push nas.yourdomain.com/docker-registry/myapp:latest

通过Harbor的Web界面,你可以清晰地看到每个镜像的不同版本,追踪版本变更历史,甚至设置自动清理策略释放存储空间。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。