跳到主要内容

Skopeo

介绍

Skopeo是一个用于在容器镜像仓库之间复制和管理镜像的工具。它支持多种镜像仓库。Skopeo可以在不需要本地Docker守护进程的情况下操作镜像,适用于镜像的复制、验证和删除等任务

认证

Linux操作系统,以containerd为容器运行时的情况下,Skopeo认证信息通常存储在 /run/user/UID/containers/auth.json 文件中,其中 UID 是当前用户的用户 ID ,执行skopeo login xxx命令

这个相对于其他工具的认证信息存储位置有点特殊,可以在 源码 看到其定义

{
"auths": {
"hub.ssgeek.com": {
"auth": "c3NnZWVrOjEyMzQ1Ngo="
}
}
}

代理

如果使用Skopeo做镜像转存,需要配置Skopeo读取的conf文件,Skopeo基于https://github.com/containers/image项目开发,配置文件格式参考registries.conf

cat > ~/.config/containers/registries.conf.d/registries-dockerio.conf << EOF 
[[registry]]
prefix = "docker.io"
location = "docker.io"
[[registry.mirror]]
location = "docker-proxy.ssgeek.com:5000"
insecure = true
EOF

# 使用时添加参数
skopeo --registries.d ~/.config/containers/registries.conf.d copy xxx

使用

转存镜像时要注意镜像的架构和操作系统

# 指定架构和操作系统
skopeo copy docker://quay.io/brancz/kube-rbac-proxy:v0.19.1 docker://hub.ssgeek.com/proxy/kube-rbac-proxy:v0.19.1 --override-arch=amd64 --override-os=linux
# 所有架构和操作系统
skopeo copy docker://quay.io/brancz/kube-rbac-proxy:v0.19.1 docker://hub.ssgeek.com/proxy/kube-rbac-proxy:v0.19.1 --multi-arch all