Skopeo
介绍
Skopeo是一个用于在容器镜像仓库之间复制和管理镜像的工具。它支持多种镜像仓库。Skopeo可以在不需要本地Docker守护进程的情况下操作镜像,适用于镜像的复制、验证和删除等任务
安装
Skopeo在Linux操作系统下安装,可以使用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_DIR,XDG 表示 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