零成本搭建私有仓库:Distribution与My Cloud OS 5完美集成
你是否正在为团队的Docker镜像管理而烦恼?公有仓库访问速度慢、私有云存储成本高、数据安全无法保障?本文将带你一步步实现Distribution与Western Digital My Cloud OS 5的无缝集成,只需一个家用网络存储设备,即可搭建属于你的高性能私有镜像仓库,彻底解决上述痛点。
读完本文后,你将能够:
- 在My Cloud OS 5设备上部署Distribution私有仓库
- 配置安全的访问控制与认证机制
- 实现本地网络内的高速镜像分发
- 确保数据持久化存储与备份
为什么选择Distribution与My Cloud OS 5集成
Distribution作为Docker官方的开源仓库实现,提供了稳定、安全、可扩展的镜像管理能力。而Western Digital My Cloud OS 5设备则是一款功能强大的家用网络存储解决方案,两者的结合可以为个人开发者或小型团队带来以下优势:
- 成本效益:无需额外购买服务器硬件,利用现有网络存储设备
- 数据主权:敏感镜像数据存储在本地,避免云端隐私泄露风险
- 访问速度:局域网内千兆网络传输,大幅提升镜像拉取/推送效率
- 简单易用:基于Web的管理界面,无需复杂的命令行操作
准备工作
在开始集成之前,请确保你已准备好以下环境和工具:
- 运行My Cloud OS 5的Western Digital网络存储设备(如My Cloud EX2 Ultra、My Cloud PR4100等)
- 设备已连接到家庭网络,并确保有稳定的电源供应
- 电脑与设备在同一局域网内,用于配置和管理
- 设备至少有10GB以上的可用存储空间
官方文档:部署指南
安装Docker环境
My Cloud OS 5系统默认未安装Docker,需要通过以下步骤手动安装:
- 登录My Cloud OS 5的管理界面,进入"应用"选项卡
- 在应用商店中搜索"Docker"并安装
- 安装完成后,启动Docker服务
- 验证Docker是否正常运行:
$ docker --version Docker version 20.10.9, build c2ea9bc
配置存储路径
为确保镜像数据能持久化存储在My Cloud设备的硬盘上,需要配置自定义存储路径:
-
通过SSH登录My Cloud设备:
$ ssh sshd@mycloud-device-ip -
创建专用存储目录:
$ mkdir -p /mnt/HD/HD_a2/registry/data $ mkdir -p /mnt/HD/HD_a2/registry/auth $ mkdir -p /mnt/HD/HD_a2/registry/certs -
设置适当的权限:
$ chmod -R 775 /mnt/HD/HD_a2/registry
配置Distribution服务
使用Docker Compose来配置和启动Distribution服务:
-
创建docker-compose.yml文件:
version: '3' services: registry: restart: always image: registry:3 ports: - 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm volumes: - /mnt/HD/HD_a2/registry/data:/var/lib/registry - /mnt/HD/HD_a2/registry/certs:/certs - /mnt/HD/HD_a2/registry/auth:/auth -
保存文件到/mnt/HD/HD_a2/registry目录
配置文件参考:示例配置
设置认证机制
为保护私有仓库不被未授权访问,需要配置认证机制:
-
创建htpasswd文件:
$ docker run --rm --entrypoint htpasswd httpd:2 -Bbn admin securepassword > /mnt/HD/HD_a2/registry/auth/htpasswd -
验证文件内容:
$ cat /mnt/HD/HD_a2/registry/auth/htpasswd admin:$2y$05$h9t7U3uK41O2bZtJZJ5q1eXlXlXlXlXlXlXlXlXlXlXlXlXlXlX -
配置HTTPS证书(自签名示例):
$ openssl req -newkey rsa:4096 -nodes -sha256 -keyout /mnt/HD/HD_a2/registry/certs/domain.key -x509 -days 365 -out /mnt/HD/HD_a2/registry/certs/domain.crt
启动Distribution服务
完成上述配置后,启动Distribution服务:
-
进入配置文件所在目录:
$ cd /mnt/HD/HD_a2/registry -
使用Docker Compose启动服务:
$ docker compose up -d -
检查服务状态:
$ docker compose ps -
查看服务日志,确认启动正常:
$ docker compose logs -f
测试私有仓库
现在可以测试私有仓库是否正常工作:
-
从另一台电脑登录仓库:
$ docker login mycloud-device-ip:5000 -
输入之前创建的用户名和密码
-
测试镜像推送和拉取:
$ docker pull hello-world $ docker tag hello-world mycloud-device-ip:5000/hello-world $ docker push mycloud-device-ip:5000/hello-world $ docker rmi mycloud-device-ip:5000/hello-world $ docker pull mycloud-device-ip:5000/hello-world
配置网络访问
为了让局域网内的其他设备也能访问私有仓库,需要进行端口转发设置:
- 登录My Cloud OS 5管理界面
- 进入"设置" > "网络" > "端口转发"
- 添加端口转发规则:
- 外部端口:5000
- 内部端口:5000
- 协议:TCP
- 设备IP:My Cloud设备的本地IP
- 保存设置
启用通知功能
配置Distribution在镜像被推送或拉取时发送通知:
-
创建通知配置文件:
notifications: endpoints: - name: local-http url: http://localhost:5001/hooks timeout: 500ms threshold: 5 backoff: 1s -
在docker-compose.yml中添加配置挂载:
volumes: - ./notifications.yml:/etc/docker/registry/notifications.yml environment: - REGISTRY_NOTIFICATIONS_ENDPOINTS_0_NAME=local-http - REGISTRY_NOTIFICATIONS_ENDPOINTS_0_URL=http://localhost:5001/hooks
常见问题与解决方法
无法访问仓库
如果遇到"无法连接到仓库"错误,请检查:
- Docker服务是否正常运行
- 防火墙设置是否允许5000端口访问
- 网络连接是否正常
- 尝试重启Distribution服务:
docker compose restart
存储容量不足
当仓库存储满时,可以:
- 删除不再需要的镜像
- 配置自动清理策略:
$ docker exec registry registry garbage-collect /etc/docker/registry/config.yml
忘记密码
如果忘记认证密码,可以重新生成htpasswd文件:
$ docker run --rm --entrypoint htpasswd httpd:2 -Bbn 新用户名 新密码 > /mnt/HD/HD_a2/registry/auth/htpasswd
总结与展望
通过本文的步骤,你已经成功在Western Digital My Cloud OS 5设备上部署了Distribution私有仓库。这一解决方案不仅提供了安全、高效的本地镜像管理能力,还显著降低了对公有仓库的依赖。
未来可以考虑的改进方向:
- 配置HTTPS加密提高安全性
- 设置镜像自动备份策略
- 实现与CI/CD系统的集成
- 监控仓库使用情况和性能
希望本文对你搭建私有Docker仓库有所帮助!如果觉得有用,请点赞收藏,并关注获取更多技术教程。
下一教程预告:《Distribution高级配置:实现镜像自动同步》
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





