差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
docker:registrymirror [2025/12/25 12:47] – [存储缓存镜像迁移] admindocker:registrymirror [2025/12/25 13:46] (当前版本) – [存储缓存镜像迁移] admin
行 283: 行 283:
   * 普通列表项目Registry 的存储索引(registry.db)。   * 普通列表项目Registry 的存储索引(registry.db)。
 这些数据是平台无关、可移植的(只要 Registry 版本一致),复制后新的加速器服务器可直接复用已有缓存,无需重新从 Docker Hub 拉取镜像。 这些数据是平台无关、可移植的(只要 Registry 版本一致),复制后新的加速器服务器可直接复用已有缓存,无需重新从 Docker Hub 拉取镜像。
 +
 +**查看缓存大小**
 +
 +```
 +du -sh /opt/docker-registry/data
 +```
  
 **复制 / 迁移的前提条件** **复制 / 迁移的前提条件**
  
-Registry 版本一致:新服务器的 Registry 镜像必须和原服务器一致(推荐用 registry:2 固定版本,避免 latest 导致版本差异); +1、**Registry 版本一致**:新服务器的 Registry 镜像必须和原服务器一致(推荐用 registry:2 固定版本,避免 latest 导致版本差异); 
-权限一致:复制后的目录权限需与 Registry 容器的运行用户(默认 root 或 1000:1000)匹配; + 
-停止原服务再复制:避免复制过程中数据写入导致文件损坏(核心!)。 +2、**权限一致**:复制后的目录权限需与 Registry 容器的运行用户(默认 root 或 1000:1000)匹配; 
-完整的复制 / 迁移步骤+ 
 +3、**停止原服务再复制**:避免复制过程中数据写入导致文件损坏(核心!)。 
 + 
 +**完整的复制 / 迁移步骤** 
 + 
 +1、**停止原 Registry 服务(关键)** 
 +``` 
 +# 进入原加速器服务器的配置目录 
 +cd /opt/docker-registry 
 +# 停止容器(避免数据写入) 
 +docker-compose down 
 +``` 
 + 
 +2、**打包 data 目录** 
 +``` 
 +# 打包data目录(保留权限和目录结构) 
 +tar -zcvf registry-data.tar.gz ./data 
 +``` 
 + 
 +3、**传输打包文件到新服务器** 
 + 
 +用 scp 或 rsync 传输(假设新服务器 IP 为 192.168.1.100): 
 +``` 
 +scp registry-data.tar.gz root@192.168.1.100:/opt/docker-registry/ 
 +``` 
 + 
 +4、**新服务器准备环境** 
 + 
 +确保新服务器已创建相同的目录结构(和原服务器的 docker-compose.yml 配置一致): 
 +``` 
 +# 新服务器创建目录 
 +mkdir -p /opt/docker-registry/{conf,data} 
 +# 解压数据(保留权限) 
 +cd /opt/docker-registry 
 +tar -zxvf registry-data.tar.gz 
 +# 修复目录权限(关键!Registry 容器需读写权限) 
 +chown -R 1000:1000 ./data  # 或 chmod -R 755 ./data(简单通用) 
 +``` 
 + 
 +5、**新服务器启动 Registry** 
 + 
 +确保新服务器的 docker-compose.yml 和 conf/config.yml 与原服务器完全一致,然后启动: 
 +``` 
 +docker-compose up -d 
 +# 检查容器状态 
 +docker-compose ps 
 +``` 
 + 
 +6、**验证迁移效果** 
 + 
 +在新服务器的客户端拉取一个原缓存过的镜像(如 nginx:alpine),会发现拉取速度极快(直接读取本地缓存): 
 +``` 
 +docker pull nginx:alpine 
 +``` 
 + 
 +**注意事项(避坑关键)** 
 + 
 +1、**禁止在线复制**:如果不停止原 Registry 就复制 data 目录,可能导致镜像分层文件(blobs)不完整,新服务器启动后出现「镜像拉取失败」「manifest 不存在」等错误; 
 + 
 +2、**版本兼容**: 
 + 
 +  * 普通列表项目低版本 Registry(如 2.7)的数据可迁移到高版本(如 2.8+),但高版本数据不能回退到低版本; 
 + 
 +  * 普通列表项目建议所有服务器统一使用 registry:2(固定大版本),避免版本兼容问题; 
 + 
 +3、**路径一致性**: 
 +新服务器的 docker-compose.yml 中,./data 必须挂载到容器的 /var/lib/registry(和原服务器一致),否则 Registry 找不到缓存数据; 
 + 
 +4、**清理无效数据**:如果迁移后发现部分镜像无法访问,可执行垃圾回收清理无效数据: 
 +``` 
 +docker exec docker-registry-mirror registry garbage-collect /etc/docker/registry/config.yml 
 +``` 
 + 
 +**总结** 
 + 
 +1、data 目录(缓存镜像的目录)可以复制给其他镜像加速器使用,核心是保证 Registry 版本一致、停止服务后复制、修复目录权限; 
 + 
 +2、迁移后新加速器可直接复用已有缓存,无需重新拉取镜像,大幅节省带宽和时间; 
 + 
 +3、关键步骤:停止原服务 → 打包数据 → 传输 → 解压并修复权限 → 启动新服务。 
 + 
  • docker/registrymirror.1766638037.txt.gz
  • 最后更改: 2025/12/25 12:47
  • admin