惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
B
Blog RSS Feed
罗磊的独立博客
V
V2EX
V
Visual Studio Blog
博客园 - 叶小钗
W
WeLiveSecurity
小众软件
小众软件
K
Kaspersky official blog
美团技术团队
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
Project Zero
Project Zero
Hugging Face - Blog
Hugging Face - Blog
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
Microsoft Azure Blog
Microsoft Azure Blog
V
Vulnerabilities – Threatpost
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
Help Net Security
Help Net Security
博客园 - Franky
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Forbes - Security
Forbes - Security
M
MIT News - Artificial intelligence
H
Hacker News: Front Page
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Spread Privacy
Spread Privacy
The Register - Security
The Register - Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Google Online Security Blog
Google Online Security Blog
PCI Perspectives
PCI Perspectives
The Last Watchdog
The Last Watchdog
AI
AI
N
News | PayPal Newsroom
D
DataBreaches.Net
Cloudbric
Cloudbric
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog

小z博客

招商银行万事达借记卡申请与消费实测 - xiaoz博客 全球多币种账户 + 海外实体借记卡,Starryblu开户教程与注意事项 - xiaoz博客 JP动作电影无字幕?Caption-Trans + AI 大模型帮你实现字幕自由 - xiaoz博客 ZNote私有笔记已支持 AI 检索问答,可轻松搭建自己的智能知识库 - xiaoz博客 ZNote私有笔记安卓版APP来了 - xiaoz博客 时隔两天,开源笔记软件ZNote又双叒叕更新了,前来汇报 - xiaoz博客 小而美的ZNote笔记软件 —— 支持Docker私有部署和WEB访问 - xiaoz博客 xiaoz博客主题重写完成:Ztheme 已开源,附使用说明 - xiaoz博客 Zocr:一款开箱即用的轻量OCR API,支持Docker一键部署 - 小z博客 ZMark书签管理器618限时折扣,买一送一 - 小z博客 ZMark 1.0.0正式版来了,AI检索功能已就绪 - 小z博客 OpenCode上手指南:我的AI编程方案 - 小z博客 FluxDown:一款界面精美、功能强大的现代下载工具,支持浏览器扩展 - 小z博客 自建私有音乐服务Songloft:Docker安装 + 小爱音箱播放 - 小z博客 基于 Cloudflare Workers 的轻量级 SMTP 发信网关:ZSend 不到20MB,支持40+数据库!这款开源客户端DBX太轻巧了 - 小z博客 Cloudflare Workers项目部署和wrangler命令使用 - 小z博客 自托管书签神器 ZMark 限量送兑换码了!先到先得 - 小z博客 OneNav重构版ZMark公测:早鸟福利已开启 - 小z博客 5分钟拥有自己的“小龙虾”:PicoClaw Docker 部署教程 - 小z博客 试试这款轻量级跨平台AI对话客户端AQBot - 小z博客 经典重生:轻量级跨平台下载神器 Motrix Next - 小z博客 终于找到了!颜值与实力并存的开源 SSH 客户端:Netcatty - 小z博客
使用Zot搭建私有容器镜像仓库,搞定Docker镜像加速 - 小z博客
xiaoz · 2026-06-16 · via 小z博客

本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

在用上 Zot 之前,xiaoz 一直用 Nexus 3 搭建容器镜像仓库。但这个重量级工具内存占用高,上手复杂,出了问题也不好排查。现在,xiaoz 已经彻底告别 Nexus 3,投入 Zot 的怀抱了。

CleanShot 2026-06-16 at 14.44.35@2x.png

注意:这篇文章具有一定专业性,推荐开发者或运维人员阅读,不建议新手小白尝试!!!

什么是Zot?

Zot 就是一个像 Docker Hub 一样的容器镜像仓库,但它是轻量级、私有的,你可以随便部署在自己的服务器上。它专门用来存储和分发你的容器镜像,也可以用来加速Docker hub镜像,从而解决国内无法拉取Docker镜像的问题。

Zot具有以下特点

  • 私有镜像存储:在自己的服务器上搭建私有的 Docker 镜像仓库,团队内部安全共享。
  • 镜像推送与拉取:完全兼容 Docker 命令,像使用 Docker Hub 一样 pushpull
  • 安全漏洞扫描:自动检查镜像里的已知安全风险,提前发现隐患。
  • 权限访问控制:支持用户认证和授权,谁可以推、谁可以拉,由你掌控。
  • 垃圾数据清理:自动回收无用的镜像层和冗余数据,节省存储空间。
  • 数据去重:相同内容只存一份,避免重复占用磁盘。
  • 跨平台支持:Linux、Mac、树莓派等都能跑,云上、本地、边缘环境通吃。
  • 极简部署:整个软件就是一个单文件,下载即用,无需安装依赖或额外服务。

使用Docker Compose部署Zot

下面xiaoz将根据我的实际需求出发,然后使用Docker Compose部署Zot

1、生成密码文件

Zot支持多种用户认证方式,最简单的就是使用Basic认证,先用下面的命令生成htpasswd文件:

docker run --rm httpd:alpine htpasswd -Bbn username password > ./htpasswd
  • username:改成你自己的用户名
  • password:改成你自己的密码

2、编写配置文件

说实话,虽然Zot这个软件本身比较轻量,但Zot的配置还是蛮复杂的,xiaoz在结合AI的情况折腾了半天才编写出符合自己需求的配置。

先来说说我的需求:

  • 加速Docker官方和GitHub容器镜像仓库,使国内网络能够正常拉取
  • 建立自己的私有容器镜像仓库

如果您和xiaoz的需求一样,那么恭喜你,可以直接抄作业了,先新建一个config.json,内容如下:

{
    "storage": {
        "rootDirectory": "/var/lib/registry",
        "commit": true,
        "dedupe": true,
        "gcInterval": "24h",
        "retention": {
            "policies": [
                {
                    "repositories": [
                        "username/**"
                    ],
                    "deleteUntagged": true,
                    "keepTags": [
                        {
                            "patterns": ".*"
                        }
                    ]
                },
                {
                    "repositories": [
                        "**"
                    ],
                    "deleteUntagged": true,
                    "keepTags": [
                        {
                            "pushedWithin": "24h",
                            "pulledWithin": "24h"
                        }
                    ]
                }
            ]
        }
    },
    "http": {
        "address": "0.0.0.0",
        "port": "5000",
        "auth": {
            "htpasswd": {
                "path": "/etc/zot/htpasswd"
            }
        },
        "accessControl": {
            "repositories": {
                "**": {
                    "defaultPolicy": [
                        "read",
                        "create",
                        "update",
                        "delete"
                    ]
                }
            }
        }
    },
    "extensions": {
        "sync": {
            "enable": true,
            "registries": [
                {
                    "urls": [
                        "https://ghcr.io"
                    ],
                    "onDemand": true,
                    "tlsVerify": true,
                    "maxRetries": 3,
                    "retryDelay": "5m",
                    "content": [
                        {
                            "prefix": "**"
                        }
                    ]
                },
                {
                    "urls": [
                        "https://registry-1.docker.io"
                    ],
                    "onDemand": true,
                    "tlsVerify": true,
                    "maxRetries": 3,
                    "retryDelay": "5m"
                }
            ]
        },
        "search": {
            "enable": true,
            "cve": {
                "updateInterval": "2h"
            }
        },
        "ui": {
            "enable": true
        }
    }
}

注意:上面的username改成你自己的用户名(参考上面的第一个步骤),更多配置参数可以参考官方文档:https://zotregistry.dev/v2.1.17/admin-guide/admin-configuration/

3、创建compose.yaml文件,内容如下:

services:
  zot:
    image: ghcr.io/project-zot/zot-linux-amd64:latest
    container_name: reg_xphub
    restart: always
    ports:
      - "5000:5000"
    volumes:
      - ./config.json:/etc/zot/config.json:ro
      - ./htpasswd:/etc/zot/htpasswd:ro
      - ./data:/var/lib/registry

最后输入docker compose up -d启动,并访问WebUI:http://IP:5000进行登录。

CleanShot 2026-06-16 at 14.45.34@2x.png

注意:如果你想使用Zot来解决国内无法拉取Docker镜像的问题,你应该将Zot部署到海外服务器!!!

使用

由于Docker客户端默认不支持http,我们可以通过反向代理http://IP:5000来配置SSL证书,使其支持https

注意:如果您使用CDN来配置,CDN请不要设置缓存,否则可能导致认证出现异常!!!

SSL证书配置成功后,我们就可以使用Docker的命令行进行登录:docker login pub.tcp.mk

注意:pub.tcp.mk改成你自己的域名,前面不需要加https://,末尾也不需要路径。

然后再拉取镜像:

docker pull pub.tcp.mk/helloz/zmark

结语

如果您也想搭建一个轻量、私有的容器镜像仓库,或者需要加速国内Docker镜像拉取,不妨试试Zot。相比Nexus 3/Harbor这类重型工具,Zot省资源、部署简单,配置文件虽然需要花点心思,但一次配好就能一劳永逸。