使用 skopeo 操作容器镜像
背景
今天项目组突然提出一个需求,跟其他应用放对接的时候提供一个镜像仓库。对接放把应用上传完以后。我们需要将这些镜像都打成tar包存到oss中。
1 |
|
根据以上的需求进行分析,目的很明确
1.需要找到一个能直接下载docker镜像并且最好是直接打tar包的工具
2.最好能镜像库与库之间的同步
3.这个工具最好不依赖docker
为啥说最好不依赖docker呢,这里并不是对docker有啥歧视的地方,见下图
我明明只需要个命令行工具来进行镜像的下载上传,并不需要真正的run起来。但是docker傻乎乎的需要程序进行守护启动才能进行镜像下载 增大维护度
skopeo的使用
到github找了找,发现官方已经有这样的工具了 并且完美支持我的需求 项目地址
安装
1 |
|
其他系统安装见安装文档
不借助 docker 下载镜像
1 |
|
--insecure-policy
选项用于忽略安全策略配置文件,该命令将会直接通过 http 下载目标镜像并存储为 /tmp/nginx.tar
,此文件可以直接通过 docker load
命令导入
从 docker daemon 导出镜像
1 |
|
该命令将会从 docker daemon 导出镜像到 /tmp/nginx.tar
;为什么不用 docker save?因为我是偷懒 dest 也是 docker-archive,实际上 skopeo 可以导出为其他格式比如 oci
、oci-archive
、ostree
等
远程获取镜像的信息
skopeo 可以在不用下载镜像的情况下,获取镜像信息
1 |
|
docker://: 是使用 Docker Registry HTTP API V2 进行连接远端
docker.io: 远程仓库
centos: 镜像名称
镜像仓的认证文件
认证文件默认存放在 $HOME/.docker/config.json
文件内容
1 |
|
其他命令
skopeo 还有一些其他的实用命令,比如 sync 可以在两个位置之间同步镜像.
源码赏析
暂时先埋个坑 以后再写
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!