简介
镜像搬运工-skopeo 是一个命令行工具,可以对容器镜像和容器存储进行操作,在没有docker 的环境下,使用 skopeo 操作镜像是非常方便的。
安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| # 安装
apt install skopeo
# 帮助
skopeo --help
copy # 复制一个镜像从 A 到 B,A和B可以为本地镜像或者远程镜像
delete # 删除一个镜像tag,可以是本地镜像或者远程镜像
inspect # 查一个镜像的详细信息
list-tags # 列出存储库名称指定的镜像的tag
login # 登录某个镜像仓库,类似于 docker login 命令
logout # 退出某个已认证的镜像仓库,类似于 docker logout 命令
sync # 将一个或多个镜像从一个位置同步到另一个位置
Flags:
--command-timeout duration # 命令超时时间(单位秒)
--debug # 启用debug模式
--insecure-policy # 在不进行任何策略检查的情况下运行该工具(如果没有配置 policy 的话需要加上该参数)
--override-arch ARCH # 处理镜像时覆盖客户端 CPU 体系架构,如在 amd64 的机器上用 skopeo 处理 arm64 的镜像
--override-os OS # 处理镜像时覆盖客户端 OS
--override-variant VARIANT # 处理镜像时使用VARIANT而不是运行架构变量
--policy string # 信任策略文件的路径 (为镜像配置安全策略情况下使用)
--registries.d DIR # 在目录中使用Registry配置文件(例如,用于容器签名存储)
--tmpdir string # 用于存储临时文件的目录
|
使用
查看镜像详细信息
1
| skopeo inspect --username "USERNAME" --password "PASSWORD" docker://hub.xxx.com/xxx/xxx:latest
|

1
| skopeo list-tags --username "USERNAME" --password "PASSWORD" docker://hub.xxx.cn/nginx
|

把镜像从一个仓库拷贝到另一个仓库
1
2
3
4
5
6
| skopeo copy --src-username "SRC_USERNAME" --src-password "SRC_PASSWORD" docker://docker.io/busybox:latest --dest-username "DEST_USERNAME" --dest-password "DEST_PASSWORD" docker://hub.xxx.cn/xxx/busybox:latest --src-tls-verify=false --dest-tls-verify=false
# --src-username:原仓库用户名
# --src-password:原仓库密码
# dest-username:目标仓库用户名
# dest-password:目标仓库密码
|

把一个镜像的所有版本从一个仓库同步到另一个仓库
1
2
3
4
5
6
| skopeo sync --src <源类型> --dest <目标类型> <源位置> <目标位置>
# <源类型>和<目标类型>:指定源和目标的类型,如:docker 表示 docker 仓库,dir 表示本地目录
# <源位置>和<目标位置>:分别指定源和目标的位置
# 把华为云镜像仓库中的 111 项目下的 222 镜像的所有版本,同步到本地私有仓库的 333 项目中
skopeo sync --src docker --dest docker --src-username "SRC_USERNAME" --src-password "SRC_PASSWORD" swr.cn-north-4.myhuaweicloud.com/111/222 --dest-username "DEST_USERNAME" --dest-password "DEST_PASSWORD" harbor.xxx.cn/333/ --src-tls-verify=false --dest-tls-verify=false
|

把远程镜像仓库中的镜像同步到本地目录
1
2
| # 把华为云仓库中 111 项目下的 222:v3 镜像同步到本地 /usr/local/src/目录下
skopeo sync --src docker --dest dir --src-username "SRC_USERNAME" --src-password "SRC_PASSWORD" swr.cn-north-4.myhuaweicloud.com/111/222:v3 /usr/local/src/
|

把本地目录中的镜像同步到远程仓库
1
2
| # 把本地 /usr/local/src/ 目录下的 111:v3 镜像同步到远程仓库的 test 项目下
skopeo sync --src dir --dest docker /usr/local/src/111\:v3 --dest-username "DEST_USERNAME" --dest-password "DEST_PASSWORD" harbor.xxx.cn/test/
|

删除镜像
1
| skopeo delete --username "USERNAME" --password "PASSWORD" docker://hub.xxx.com/xxx/xxx:latest --tls-verify=false --debug
|
