Linux使用skopeo工具如何进行docker镜像同步

 更新时间:2025年05月29日 09:18:26   作者:学亮编程手记  
这篇文章主要介绍了Linux使用skopeo工具如何进行docker镜像同步问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、skopeo sync 使用示例

skopeo sync 是用于在镜像仓库、本地目录或其他存储类型之间批量同步镜像的工具。

以下为常见场景示例:

1. 远程仓库同步到本地目录

将 Docker Hub 上的 httpd 镜像所有标签同步到本地目录 /root/skopeo-sync/httpd

skopeo sync --src docker --dest dir docker://docker.io/library/httpd /root/skopeo-sync/httpd  

本地目录会生成包含镜像 manifest.json 和所有层文件的目录结构。

2. 本地目录同步到远程仓库

将本地目录中的镜像推送到 Harbor 私有仓库(需认证):

skopeo sync --insecure-policy --dest-tls-verify=false \  
--src dir --dest docker /root/skopeo-sync/httpd:latest \  
docker://harbor.example.com/project/httpd:latest  

需通过 --dest-creds 指定用户名密码(若未提前通过 skopeo login 认证)。

3. 仓库到仓库同步

从 Docker Hub 同步 busybox 镜像到私有仓库:

skopeo sync --src docker --dest docker \  
docker://docker.io/library/busybox \  
docker://registry.example.com/images-bak/  

支持通过 --src-creds--dest-creds 指定源和目标仓库的认证信息。

4. 基于配置文件的批量同步

创建配置文件 sync.yml

docker.io:  
  tls-verify: false  
  images:  
    nginx:  
      - "latest"  
      - "alpine"  
quay.io:  
  tls-verify: false  
  images:  
    coreos/etcd:  
      - "latest"  

执行同步到本地目录:

skopeo sync --src yaml --dest dir sync.yml ./local-images  

此方式适合批量同步多个仓库和标签。

二、CentOS 7 是否自带 skopeo?

。CentOS 7 默认软件源中的 skopeo 版本为 0.1.40(通过 yum install skopeo 安装),而 sync 子命令需要 1.0+ 版本 才支持。

解决方案

手动安装新版

从 GitHub 下载预编译二进制文件(推荐):

wget https://github.com/lework/skopeo-binary/releases/download/v1.14.4/skopeo-linux-amd64  
mv skopeo-linux-amd64 /usr/bin/skopeo  
chmod +x /usr/bin/skopeo  

或通过源码编译(需 Go 环境)。

使用容器化版本

podman run quay.io/skopeo/stable:latest sync --help  

三、注意事项

  1. 认证问题:私有仓库需通过 --creds~/.docker/config.json 配置认证信息。
  2. TLS 验证:自签名证书仓库需添加 --src-tls-verify=false--dest-tls-verify=false 参数。
  3. 性能优化sync 支持增量同步,避免重复传输相同层文件。

如需更详细的参数说明,可参考官方文档 或使用 skopeo sync --help 查看帮助。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何进入、退出docker的container实现

    如何进入、退出docker的container实现

    这篇文章主要介绍了如何进入、退出docker的container实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 基于Docker 搭建WordPress的方法

    基于Docker 搭建WordPress的方法

    这篇文章主要介绍了基于Docker 搭建WordPress的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • docker容器run命令设置方式

    docker容器run命令设置方式

    docker run命令中的-p参数用于映射宿主机端口到容器端口,注意宿主机端口不应被占用,且容器端口应为容器内运行程序的实际端口号,宿主机是指运行Docker的物理或虚拟主机
    2024-11-11
  • 使用 docker部署tomcat并接入skywalking的使用

    使用 docker部署tomcat并接入skywalking的使用

    这里主要介绍了使用 docker 部署 tomact 并接入 skywalking 的使用,因为在网上并没有查到太多相关的信息,所以这里记录下来,需要对有需求的小伙伴提供一些帮助
    2021-04-04
  • 30分钟带你了解Docker(推荐)

    30分钟带你了解Docker(推荐)

    这篇文章是针对Java开发人员的,但Docker的使用场景绝不仅限于此。最后,灵敏意味着可能有一些开发方式需要调整,到底如何利用Docker应该是当你了解它之后需要认真思考的问题
    2018-08-08
  • Docker部署及使用压测神器sysbench的方法

    Docker部署及使用压测神器sysbench的方法

    sysbench 是一个开源跨平台的多线程性能测试工具,这篇文章主要介绍了Docker部署及使用压测神器sysbench的相关知识,需要的朋友可以参考下
    2022-08-08
  • docker安装RabbitMq添加用户实现方式

    docker安装RabbitMq添加用户实现方式

    这篇文章主要介绍了docker安装RabbitMq添加用户实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Docker快速部署国产达梦数据库的实现示例

    Docker快速部署国产达梦数据库的实现示例

    本文主要介绍了Docker快速部署国产达梦数据库的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 使用docker极简打包java.jar镜像并启动的操作步骤

    使用docker极简打包java.jar镜像并启动的操作步骤

    这篇文章主要介绍了用docker极简打包java.jar镜像并启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 关于docker无法正常下载镜像的问题小结

    关于docker无法正常下载镜像的问题小结

    之前还可以正常下载镜像,但是一段时间之后就无法下载了,猜测可能是政治原因,无法连接到国外服务器,所以我设置了阿里云的镜像加速器,需要的朋友可以参考下
    2024-06-06

最新评论