写给每一个在内网、离线、信创环境里被 Docker 镜像管理折磨过的运维。

6 阅读3分钟

外包运维4年,我给自己做了个内网 Docker 镜像管理工具(已开源)

写给每一个在内网、离线、信创环境里被 Docker 镜像管理折磨过的运维。


先说痛点

干运维的都知道,内网环境管理 Docker 镜像有多蛋疼:

官方 Registry 没有界面。 装好 registry:2 之后你面对的是裸 REST API——查个镜像列表要 curl,删个 tag 要拼 manifest digest,普通人根本没法用。每次有人问"仓库里都有啥",你都得现场表演命令行。

Harbor 太重。 企业级全家桶:数据库、多个组件、HA 架构、一堆依赖镜像。为了一个内网镜像仓库,部署一次要折腾一整天,离线环境更是地狱——所有依赖镜像你得提前一个个 docker save 带进去。杀鸡用牛刀,但你没得选。

Portainer 是通用容器管理。 它不是 Registry 专用工具,镜像仓库场景用着就是别扭——没有仓库视图、没有 manifest 管理、推送删除都得绕。

离线环境工具链本身是死结。 等保、保密、信创,越来越多环境是物理隔离的。你连装工具的镜像都拉不下来,这就是个鸡生蛋的问题。

我在这行 4 年,外包出身,各种奇奇怪怪的内网环境见了不少。每次都被这套组合拳打一遍。忍无可忍,我给自己写了个工具。

我做的东西

Nimbus Registry Console —— 本地 Docker Registry 管理控制台,专为内网/离线环境设计。

一句话:一个镜像,一条命令,构建 → 推送 → 部署全流程覆盖,断网也能用。

功能

功能说明
工作台系统状态概览、快速部署、镜像导入、活动日志
构建Dockerfile / Compose 编辑器、文件树、构建缓存管理、项目模板
仓库本地镜像列表、Registry 仓库浏览、manifest 查看、推送 / 导出 / 删除
部署容器管理(启动/停止/重启/移除)、Compose 项目管理、资源监控
工具箱网络、卷、备份恢复、常用命令速查、设置

设计取舍

做的时候定了几个死原则:

  1. 离线优先。内置 OFFLINE_MODE,启动时自动校验必需镜像(registry:2alpine:3.20)是否可用。断网环境开箱即用,这是和 Harbor 们最大的区别——它们是为在线环境设计的,离线是后补的。
  2. 零依赖后端。后端是纯 Node.js 原生 http.createServer,没有 Express 没有框架,约 900 行。镜像小、启动快、出问题好排查。
  3. 单容器部署docker compose up -d 一条命令,arm64 / amd64 双架构,内网拷过去 docker load 就能用。
  4. 数据不丢。SQLite + 命名卷持久化,重建容器镜像不清数据。

快速开始

docker compose up -d

打开 http://localhost:3000

# 推送镜像到内置 Registry
docker tag my-app:latest 127.0.0.1:5001/my-app:latest
docker push 127.0.0.1:5001/my-app:latest

技术栈

  • 前端:Next.js 16 + React 19 + Vinext + Tailwind CSS v4(玻璃态暗色主题)
  • 后端:Node.js 原生 HTTP Server(零框架依赖)
  • 存储:SQLite + JSON 持久化
  • 部署:Docker 多阶段构建,单容器

为什么开源

两个原因。

一是这东西本来就是从真实需求长出来的——外包 4 年见过太多环境,我知道它解决了什么问题,也知道还没解决什么。开源出来,让同样处境的人能用上,也让他们帮我挑毛病。

二是我准备转 SRE/DevOps 了。这个项目就是我的敲门砖——它证明我不只会"照着文档部署",还能从零设计一个解决真实问题的工具。star 数不重要,重要的是它真的能跑、真有人用。

开源地址

github.com/MorGogh/nim…

MIT 协议,随便用。有内网/离线部署的需求、踩了坑、或者想要什么功能,欢迎提 issue,我都会看。

如果它帮你省了哪怕半天时间,点个 star 就是最大的支持。


一个外包运维的转型自白。共勉。