当前位置: 首页 > news >正文

自建仓库推送到NAS采用 Docker Registry 工作流

自建仓库推送到NAS采用 Docker Registry 工作流

放弃手动 saveload 的方式,改用行业标准的 Registry(仓库)模式。这是最专业、最高效的方案。

优点

  • 彻底解决版本兼容性问题,因为 push/pull 协议是标准化的。
  • 传输效率高,再次推送时只会上传有变动的层(layer)。
  • 是 DevOps 和自动化流程的基础,是更专业的做法。

【在 NAS 上部署 Registry 服务并映射】

在方法1(见主页相关文章-如何提取docker镜像用于NAS手动安装)的基础上,registry Tags | Docker Hub 打包拉取docker pull --platform linux/amd64 registry:2,或者自己直接拉取,这是 Docker 官方提供的私有仓库镜像。注意,这后面的:2表示版本号。

然后在 Container Station 中导入并运行该容器。将其端口(5000)映射到 NAS 的一个端口(57080)上。

image

【进行Frp穿透】,这部分内容有很多方式,在局域网内操作就不用了,直接NAS地址:端口号即可。

image

【局域网配置信任地址】

由于私有仓库未使用 HTTPS 加密,需要告诉 Docker 客户端信任这个地址。

打开 Docker Desktop -> Settings -> Docker Engine

在右侧的 JSON 配置文件中,添加 insecure-registries 字段。将你的局域网和外网地址都加进去。

JSON

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"insecure-registries": ["192.168.1.100:57080","你的Frp域名.app:12345"]
}

如果你弄错了,下面是默认的JSON配置

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false
}

点击 Apply & Restart 保存并重启 Docker 服务。这一步至关重要,否则 push 会失败

image

【PC上打标签】,将你的镜像重新打上标签(tag),指向你的 NAS 私有仓库地址。

# 拉取一个用于测试的镜像hello-world
docker pull --platform linux/amd64 hello-world
# 格式: docker tag [源镜像名] [NAS_IP:端口/镜像名] 下面的my-只是自己起的新名字
docker tag hello-world 192.168.1.100:57080/my-hello-world
# 若不是局域网,则为:
docker tag hello-world 你的Frp域名.app:12345/my-hello-world

【将镜像推送到(push)你的 NAS】重新标记镜像 (Tag),指向你的仓库地址:

# 局域网
docker push 192.168.1.100:57080/my-hello-world
# 非局域网 通过 FRP 外网访问
docker push 你的Frp域名.app:12345/my-hello-world

(注:如果 Docker 默认要求 HTTPS,你可能需要在 Docker Desktop 的设置中将 192.168.1.100:5000 添加到 "insecure-registries" 列表中)

docker tagdocker push 命令中的仓库地址格式是 [域名或IP]:[端口]/[镜像名], 它不包含 http://https:// 这样的协议前缀。Docker 客户端会自动处理协议。

推送成功后,你就可以在 NAS 的 Container Station 里,通过镜像名称 192.168.1.100:57080/my-hello-world 来创建新的应用了,它会直接从你自己的仓库中拉取,速度飞快。

【在NAS中拉取】

image

拉取创建容器后打印出成功的日志:

image

完毕,大功告成~花费些时间才查出网络波动问题和一些规则问题了。o(╥﹏╥)o

http://www.wxhsa.cn/company.asp?id=7056

相关文章:

  • 【汇编和指令集 . 第2025 . 9期】发现大牛
  • Opencompass避坑日记
  • 随笔 | 农场、小猴子、香蕉
  • Day17数组的使用
  • 完整教程:缓存与数据库一致性的4大坑及终极解决方案
  • Rust的Cargo用法详解 - 详解
  • 串行通信接口标准(TTL、CMOS、RS232、RS422、RS485、CAN等)
  • 攻防世界-IgniteMe - xxx
  • C 语言 之 面向对象(一)
  • for_switch
  • 快速幂
  • 模拟退火
  • 记录我见过的神人
  • DOS指令学习
  • 动态SQL
  • 调教分块代码
  • 100 粉粉福
  • My All Math
  • 【Azure环境】使用ARM Template部署Policy模板时候报错不支持filed函数: The template function field is not valid.
  • CDQ分治
  • 开源AI大模型、AI智能名片与S2B2C商城小代码:从“不出现=不存在”到“精准存在”的数字化转型路径
  • 202509 组合数学与计数类 DP 笔记
  • edu 106 E(LCS dp + 多源bfs优化)
  • ABC310E NAND repeatedly 题解
  • MyBatis插入语句配置
  • 操作运算符
  • 看 NOI2025 游记记
  • 整体二分
  • 得力 - Bruce
  • 短视频营销运营导师张伽赫,绳木传媒AI+短视频引领企业数字化变革