Files
docker_practice/17_ecosystem/17.5_skopeo.md
2026-02-27 20:23:35 -08:00

80 lines
3.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 17.5 Skopeo - 容器镜像管理工具
本节介绍 Skopeo包括其基础概念应用场景以及基本指令
### Skopeo 简介
Skopeo 是一个由 Red Hat 赞助开源的命令行工具它可以在不需要运行容器守护进程 Docker Daemon的前提下对容器镜像进行极其高效的操作和管理包括检查复制删除和签名等操作
Skopeo 最大的特点是其可以在不将镜像拉取到本地的情况下直接在远端 Registry镜像仓库之间完成检查和搬运从而大幅度节省带宽和磁盘空间这也是它在容器运维和分发领域非常受欢迎的原因
### 核心特性
- **远程巡检**通过 `skopeo inspect` 可以查看远端仓库中镜像的元数据例如包含哪些层环境变量信息入口命令等而完全无需拉取该镜像
- **镜像复制与同步**支持各种格式之间的相互传输如在不同的容器仓库之间或者从仓库拉取到本地的目录或者存储为 OCI 布局结构等
- **镜像删除**可以远程删除仓库中的镜像需要拥有权限
- **签名验证**支持在分发镜像前进行数字签名以保障安全性
### 安装 Skopeo
类似于 BuildahSkopeo 也直接包含在大部分主流的 Linux 源中
Fedora/CentOS/RHEL 等发行版中
```bash
$ sudo dnf install -y skopeo
```
Ubuntu/Debian
```bash
$ sudo apt-get update
$ sudo apt-get -y install skopeo
```
如果是 macOS 环境可以通过 Homebrew 安装
```bash
$ brew install skopeo
```
### 基础用法示例
#### 1. 远程检查镜像
有时候我们只想知道远端镜像的详细信息并不想拉取它下面是检查 Docker Hub 上的 Alpine 镜像的例子
```bash
$ skopeo inspect docker://docker.io/library/alpine:latest
```
这个命令会返回一段 JSON 格式的数据其中包含了诸如镜像摘要Digest创建时间架构Architecture标签Tags等丰富信息在自动化的工具和系统审查环境中这是一个不可或缺的利器
#### 2. 同步与复制镜像
`skopeo copy` 是使用最为广泛的命令它可以在不同的仓库不同的格式之间无缝搬运镜像
例如从一个公共仓库直接搬运镜像到一个私有企业仓库无需将其先 `docker pull` 到本地 `docker push`
```bash
$ skopeo copy docker://docker.io/library/alpine:latest docker://registry.example.com/library/alpine:latest
```
又或者你可以将远程镜像拉取到本地只为了检查其拆解后的格式比如将镜像解压到本地某个目录下以 OCI 规范存放
```bash
$ skopeo copy docker://docker.io/library/alpine:latest oci:alpine-oci
```
如果我们要将本地的某个目录下的打包好的镜像再次推向 Registry 或转换为其它存储类型也是完全支持的诸如
- `docker://` 远端 Registry
- `docker-archive:` / `docker-daemon:` Docker 对应的归档文件或本地守护进程
- `oci:` / `oci-archive:` OCI 相关文件格式
- `dir:` 本地纯目录
#### 3. 校验机制与安全
如果你不信任公开仓库上的镜像或是需要通过特定的 TLS 证书和鉴权Skopeo 的功能也是能很好的支持的比如它可以直接传递诸如 `--src-creds` `--dest-tls-verify=false` 等参数这在进行网络隔离的复杂镜像搬运操作中常常会用到
对于复杂的容器环境或那些纯粹用于镜像资产管理的节点来说Skopeo 提供了一个直接而强大的数据搬运工