Skopeo 镜像管理与复制工具教程

Skopeo 是一款用于操作容器镜像和镜像仓库的命令行工具,由 Red Hat 开发。与 Docker 不同,Skopeo 可以在不拉取整个镜像的情况下检查远程镜像信息,还能在不同仓库之间直接复制镜像。本文介绍如何在搬瓦工 VPS 上使用 Skopeo 高效管理容器镜像。

一、安装 Skopeo

# Ubuntu/Debian
apt-get update && apt-get install -y skopeo

# CentOS/RHEL
yum install -y skopeo

# 验证安装
skopeo --version

二、检查远程镜像信息

无需拉取镜像即可查看其详细信息:

# 查看镜像 manifest
skopeo inspect docker://docker.io/library/nginx:latest

# 查看镜像配置(更详细)
skopeo inspect --config docker://docker.io/library/nginx:latest

# 只查看镜像标签列表
skopeo list-tags docker://docker.io/library/nginx

# 查看镜像的原始 manifest(JSON 格式)
skopeo inspect --raw docker://docker.io/library/nginx:latest

三、复制镜像

3.1 仓库之间复制

# 从 Docker Hub 复制到私有仓库
skopeo copy docker://docker.io/library/nginx:latest docker://registry.example.com/nginx:latest

# 从私有仓库复制到另一个私有仓库
skopeo copy docker://registry-a.com/myapp:v1.0 docker://registry-b.com/myapp:v1.0

3.2 导出为本地文件

# 导出为 Docker 格式 tar 文件
skopeo copy docker://nginx:latest docker-archive:/tmp/nginx.tar:nginx:latest

# 导出为 OCI 格式目录
skopeo copy docker://nginx:latest oci:/tmp/nginx-oci:latest

# 导入 tar 到本地存储
skopeo copy docker-archive:/tmp/nginx.tar containers-storage:nginx:latest

3.3 在本地存储和仓库间复制

# 从本地 Podman/Buildah 存储推送到仓库
skopeo copy containers-storage:myapp:latest docker://registry.example.com/myapp:latest

# 从仓库拉取到本地存储
skopeo copy docker://registry.example.com/myapp:latest containers-storage:myapp:latest

四、批量同步镜像

# 同步整个仓库
skopeo sync --src docker --dest docker docker.io/library/nginx registry.example.com/mirror/

# 使用配置文件批量同步
cat > sync.yml <<'EOF'
docker.io:
  images:
    nginx:
      - "latest"
      - "1.25"
      - "alpine"
    redis:
      - "7"
      - "7-alpine"
    mysql:
      - "8.0"
EOF

skopeo sync --src yaml --dest docker sync.yml registry.example.com/mirror/

五、认证管理

# 登录镜像仓库
skopeo login registry.example.com

# 使用用户名密码登录
skopeo login -u username -p password registry.example.com

# 登出
skopeo logout registry.example.com

# 使用指定的认证文件
skopeo copy --authfile /path/to/auth.json docker://src docker://dest

六、镜像删除

# 删除远程仓库中的镜像标签
skopeo delete docker://registry.example.com/myapp:old-tag

七、实用场景

7.1 搬瓦工 VPS 间迁移镜像

# 在源服务器上导出
skopeo copy containers-storage:myapp:latest docker-archive:/tmp/myapp.tar

# 传输到目标服务器
scp /tmp/myapp.tar user@target-vps:/tmp/

# 在目标服务器上导入
skopeo copy docker-archive:/tmp/myapp.tar containers-storage:myapp:latest

7.2 创建镜像镜像站

cat > /opt/mirror-sync.sh <<'SCRIPT'
#!/bin/bash
DEST="registry.example.com/mirror"
for img in nginx:latest redis:7-alpine mysql:8.0 postgres:15; do
    echo "Syncing $img..."
    skopeo copy docker://docker.io/library/$img docker://$DEST/$img
done
echo "Sync complete at $(date)"
SCRIPT
chmod +x /opt/mirror-sync.sh

八、常见问题

TLS 证书错误

# 跳过 TLS 验证(仅用于测试)
skopeo copy --src-tls-verify=false --dest-tls-verify=false docker://src docker://dest

# 使用自签名证书
skopeo copy --src-cert-dir=/etc/docker/certs.d/registry.example.com docker://src docker://dest

总结

Skopeo 是容器镜像管理的瑞士军刀,特别适合镜像迁移、仓库同步和镜像信息检查等场景。它与 PodmanBuildah 共同组成完整的容器工具链。选购搬瓦工 VPS 请访问 bwh81.net,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。