mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
80 lines
3.6 KiB
Go
80 lines
3.6 KiB
Go
## 17.5 Skopeo - 容器镜像管理工具
|
||
|
||
本节介绍 Skopeo,包括其基础概念、应用场景以及基本指令。
|
||
|
||
### Skopeo 简介
|
||
|
||
Skopeo 是一个由 Red Hat 赞助开源的命令行工具,它可以在不需要运行容器守护进程(如 Docker Daemon)的前提下,对容器镜像进行极其高效的操作和管理,包括:检查、复制、删除和签名等操作。
|
||
|
||
Skopeo 最大的特点是其可以在“不将镜像拉取到本地”的情况下,直接在远端 Registry(镜像仓库)之间完成检查和搬运,从而大幅度节省带宽和磁盘空间。这也是它在容器运维和分发领域非常受欢迎的原因。
|
||
|
||
### 核心特性
|
||
|
||
- **远程巡检**:通过 `skopeo inspect` 可以查看远端仓库中镜像的元数据(例如包含哪些层、环境变量信息、入口命令等),而完全无需拉取该镜像。
|
||
- **镜像复制与同步**:支持各种格式之间的相互传输,如在不同的容器仓库之间、或者从仓库拉取到本地的目录、或者存储为 OCI 布局结构等。
|
||
- **镜像删除**:可以远程删除仓库中的镜像(需要拥有权限)。
|
||
- **签名验证**:支持在分发镜像前进行数字签名以保障安全性。
|
||
|
||
### 安装 Skopeo
|
||
|
||
类似于 Buildah,Skopeo 也直接包含在大部分主流的 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. 远程检查镜像(Inspect)
|
||
|
||
有时候我们只想知道远端镜像的详细信息,并不想拉取它。下面是检查 Docker Hub 上的 Alpine 镜像的例子:
|
||
|
||
```bash
|
||
$ skopeo inspect docker://docker.io/library/alpine:latest
|
||
```
|
||
|
||
这个命令会返回一段 JSON 格式的数据,其中包含了诸如镜像摘要(Digest)、创建时间、架构(Architecture)、标签(Tags)等丰富信息。在自动化的工具和系统审查环境中,这是一个不可或缺的利器。
|
||
|
||
#### 2. 同步与复制镜像(Copy)
|
||
|
||
`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 提供了一个直接而强大的数据“搬运工”。
|