Zot 仓库简介
Zot 是一个为云原生时代设计的、极简而强大的 OCI 镜像仓库,功能纯粹、部署简单、资源占用极低的私有仓库。
第一步:挂载数据目录(持久化存储)
为了让镜像数据在容器重启或删除后不丢失,需要将容器内的数据目录映射到宿主机的目录。
1. 创建宿主机目录
首先,在宿主机上创建用于存放数据和配置的目录:
# 创建数据目录和配置目录
mkdir -p /data/zot/data
mkdir -p /data/zot/etc
第二步:配置用户名密码认证
Zot支持多种认证方式,最常用的是基于htpasswd文件的HTTP基本认证。
1. 生成 htpasswd 密码文件
使用htpasswd命令创建密码文件。必须使用 -B 参数进行bcrypt加密,因为Zot要求使用bcrypt。
# 安装 htpasswd 工具 (如果未安装)
# Ubuntu/Debian: apt install apache2-utils
# 创建密码文件并添加第一个用户
htpasswd -B -c /data/zot/etc/htpasswd ocean-dev
-B:强制使用bcrypt加密。-c:创建新文件。如果要添加更多用户,则去掉-c参数:htpasswd -B /data/zot/etc/htpasswd another-username
2. 创建Zot配置文件
创建/data/zot/etc/config.json文件,写入以下内容:
nano /data/zot/etc/config.json
{
"distSpecVersion": "1.0.1",
"storage": {
"rootDirectory": "/var/lib/registry"
},
"http": {
"address": "0.0.0.0",
"port": "5000",
"compat": ["docker2s2"],
"auth": {
"htpasswd": {
"path": "/etc/zot/htpasswd"
}
}
},
"extensions": {
"ui": {
"enable": true
},
"search": {
"enable": true
}
}
}
storage.rootDirectory: 指定数据存储目录,应与容器内挂载路径一致。http.compat: 添加"docker2s2"以确保兼容Docker客户端。http.auth.htpasswd.path: 指向容器内的htpasswd文件路径。http.accessControl(可选): 用于细粒度的权限控制。
Zot 的 Web 界面是一个可选功能,需要在配置文件中显式开启。 extensions.ui 和 extensions.search
访问界面:在浏览器中访问 http://<你的服务器IP>:5000 即可。
如果先前已配置了用户认证(如 htpasswd),访问 Web 界面时也需要登录。
3. 使用配置文件启动容器
结合端口映射,一个基本的运行命令如下:
docker run -d \
--name zot-registry \
-p 5000:5000 \
-v /data/zot/data:/var/lib/registry \
-v /data/zot/etc:/etc/zot \
ghcr.io/project-zot/zot-linux-amd64:latest
4. 添加非安全仓库配置
Windows: 找到 Docker 鲸鱼图标,右键点击,选择 Settings(设置)-> 选择 Docker Engine
Linux服务器: nano /etc/docker/daemon.json
添加配置:
{
"insecure-registries": [
"10.4.96.14:5000"
]
}
第三步:验证和使用
1. 登录仓库
docker login localhost:5000
输入你创建的用户名和密码。
2. 推送镜像
# 给本地镜像打标签
docker tag redis:latest localhost:5000/my-redis:v1
# 推送镜像
docker push localhost:5000/my-redis:v1
3. 拉取镜像
docker pull localhost:5000/my-redis:v1
回复 (0)
微信扫码 立即评论
