Skopeo 简介

温馨提醒

简介

镜像搬运工-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

查看镜像有哪些 tags

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

2

把镜像从一个仓库拷贝到另一个仓库

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:目标仓库密码

3

把一个镜像的所有版本从一个仓库同步到另一个仓库

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

4

把远程镜像仓库中的镜像同步到本地目录

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/

5

把本地目录中的镜像同步到远程仓库

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/

6

删除镜像

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

7