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

推荐订阅源

GbyAI
GbyAI
C
Cybersecurity and Infrastructure Security Agency CISA
IT之家
IT之家
罗磊的独立博客
阮一峰的网络日志
阮一峰的网络日志
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
L
LINUX DO - 最新话题
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
S
SegmentFault 最新的问题
S
Schneier on Security
A
About on SuperTechFans
L
Lohrmann on Cybersecurity
博客园_首页
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Securelist
博客园 - 司徒正美
H
Hacker News: Front Page
Jina AI
Jina AI
K
Kaspersky official blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
J
Java Code Geeks
B
Blog
Google DeepMind News
Google DeepMind News
博客园 - Franky
The Cloudflare Blog
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
H
Help Net Security
Spread Privacy
Spread Privacy
N
News and Events Feed by Topic
A
Arctic Wolf
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
宝玉的分享
宝玉的分享
T
The Blog of Author Tim Ferriss
O
OpenAI News
N
Netflix TechBlog - Medium
G
GRAHAM CLULEY
F
Fortinet All Blogs
V
V2EX
N
News | PayPal Newsroom
Y
Y Combinator Blog
雷峰网
雷峰网
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Recent Commits to openclaw:main
Recent Commits to openclaw:main

小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博客
使用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省资源、部署简单,配置文件虽然需要花点心思,但一次配好就能一劳永逸。