前言昨天刚写完【技术底稿 10】Ollama 部署直接冲上了运维榜第二。今天趁热打铁把内网环境最刚需、一次部署终身受益的基础设施 ——私有 Docker 镜像仓库完整落地。对于多服务器、内网隔离、经常部署 AI 服务与微服务的场景来说私有仓库真的是效率神器一次下载、内网全服共享、告别离线拷镜像、版本统一管理。本篇全程实战、可直接复制执行无废话、纯干货。一、使用场景与痛点在内网环境搭建 DevOps 平台和 AI 项目时你一定会遇到这些问题多台服务器镜像要反复下载、拷贝极其浪费时间离线传输镜像包动辄几个 G拷贝慢、容易损坏镜像版本混乱这台一个版本、那台一个版本AI 镜像Milvus、Ollama 等体积巨大重复下载扛不住所以私有 Docker 仓库是内网环境的基建标配一次拉取 → 推入仓库 → 所有服务器内网秒拉。二、环境信息系统Ubuntu 22.04服务器 IP192.168.18.100仓库版本registry:2部署方式Docker Compose用途业务镜像、监控镜像、AI 向量库镜像统一托管三、部署步骤直接复制跑1. 加载镜像如果你是离线环境先加载镜像plaintextdocker load -i registry.tar2. 编写 docker-compose.ymlyamlversion: 3.5 services: registry: container_name: registry image: registry:2 ports: - 5000:5000 volumes: - ./registry-data:/var/lib/registry restart: always3. 一键启动plaintextdocker-compose up -d4. 客户端配置所有机器都要配编辑/etc/docker/daemon.json加入json{ insecure-registries: [192.168.18.100:5000] }重启 Dockerplaintextsystemctl daemon-reload systemctl restart docker四、推送镜像到私有仓库以 Milvus、MySQL、Nginx、Ollama 为例1打标签plaintextdocker tag registry:2 192.168.18.100:5000/registry:2 docker tag mysql:8.0 192.168.18.100:5000/mysql:8.0 docker tag milvusdb/milvus:v2.3.0 192.168.18.100:5000/milvusdb/milvus:v2.3.02推送plaintextdocker push 192.168.18.100:5000/registry:2 docker push 192.168.18.100:5000/mysql:8.0 docker push 192.168.18.100:5000/milvusdb/milvus:v2.3.03其他机器拉取plaintextdocker pull 192.168.18.100:5000/mysql:8.0五、常用运维命令查看仓库里有哪些镜像plaintextcurl http://192.168.18.100:5000/v2/_catalog查看某个镜像的版本plaintextcurl http://192.168.18.100:5000/v2/mysql/tags/list查看日志plaintextdocker logs -f registry六、常见坑1客户端拉取报错http: server gave HTTP response to HTTPS client→ 就是没配insecure-registries2推送失败→ 标签没打对必须是仓库IP:端口/名称:版本3数据丢失→ 一定要挂目录持久化我这里用了./registry-data七、价值总结一次部署整个局域网终身受益彻底告别离线拷镜像、U 盘传文件AI 大镜像、微服务多环境统一管理为后续 K3s、Jenkins、监控体系打基础内网 DevOps 平台必备基建关注我持续更新《人生底稿》成长史 《技术底稿》《产品底稿》实战干货一起踏实成长不焦虑、不内卷。 系列导航【人生底稿 01】农村少年1995–2005【技术底稿】0137岁老码农用4台机器搭了套个人DevOps平台【产品底稿01】37 岁 Java 老码农用 Java 搭了个 AI 写作助手把自己 14 年技术文章全喂给了 AI