初始化操作
拉取镜像
docker pull registry:2
创建config.yml文件
version: 0.1
log:
fields:
service: registry
storage:
delete:
enabled: true
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
运行registry
docker run -d \
-p 5000:5000 \
--name registry \
-v /catelogue-for-volume/registry/registry-data:/var/lib/registry \
-v /catelogue-for-volume/registry/config.yml:/etc/docker/registry/config.yml \
--restart=always \
registry:2
查看docker仓库
http://124.221.119.150:5000/v2/_catalog
在使用docker的服务器上配置通过HTTP协议拉取镜像
配置文件路径:/etc/docker/daemon.json
将124.221.119.150:5000加入insecure-registries,例如
{
"registry-mirrors": ["https://docker.1ms.run"],
"insecure-registries": ["124.221.119.150:5000"]
}
在使用docker的服务器上通过tag命令重构某个镜像文件(例如:alpine:latest)
docker tag alpine:latest 124.221.119.150:5000/myalpine:latest
推送镜像
docker push 124.221.119.150:5000/myalpine:latest
通过该接口查看推送的镜像
http://124.221.119.150:5000/v2/_catalog
通过该接口查看某个镜像的所有版本
http://124.221.119.150:5000/v2/<镜像名称>/tags/list
拉取镜像
docker pull 124.221.119.150:5000/myalpine:latest
备份及恢复
备份
备份前先查看路径是否正确
ls -ld /catelogue-for-volume/registry/data # 查看目录是否存在及权限
备份成压缩包
sudo tar -czvf registry-backup-$(date +%Y%m%d).tar.gz /catelogue-for-volume/registry/data
恢复
停止运行registry
docker stop registry # 如果容器名为 registry
解压
sudo tar -xzvf /root/registry-backup-20250421.tar.gz -C /
权限修复
sudo chown -R 1000:1000 /root/registry/data # 根据实际 Registry 容器用户 ID 调整
重启registry服务
# 1. 停止并删除旧容器
docker stop registry
docker rm registry
# 2. 重新启动 Registry(使用你指定的 registry:2 镜像)
docker run -d --name registry \
-v /root/registry/data:/var/lib/registry \
-p 5000:5000 \
registry:2
删除(例如myalpine:latest)
MANIFEST=$(curl -sI -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
http://localhost:5000/v2/myalpine/manifests/latest | grep 'Docker-Content-Digest' | awk '{print $2}' | tr -d '\r\n')
echo "尝试删除 Manifest: ${MANIFEST}"
curl -v -X DELETE "http://localhost:5000/v2/myalpine/manifests/${MANIFEST}"
docker exec registry registry garbage-collect /etc/docker/registry/config.yml --delete-untagged
# 检查 myalpine 的标签(应返回 404)
curl -v http://localhost:5000/v2/myalpine/tags/list