跳到主要内容

Skopeo

介绍

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

安装

SkopeoLinux操作系统下安装,可以使用yum或者apt进行安装

yum install skopeo -y
apt install skopeo -y

MacOS可以使用brew进行安装

brew install skopeo

认证

认证方式和Docker一样,执行skopeo login xxx命令

skopeo login hub.ssgeek.com

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

/run/user/UID/ 这个目录又叫做 XDG_RUNTIME_DIRXDG 表示 X Desktop Group,是一个用于存储用户运行时文件的标准目录,可以通过 echo $XDG_RUNTIME_DIR 查看

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

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

MacOS 操作系统,认证信息存储在 ~/.docker/config.json 文件中

{
"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