Skip to content

Commit faa8294

Browse files
author
bootc-dev Bot
committed
Sync common files from infra repository
Synchronized from bootc-dev/infra@f214d52. Signed-off-by: bootc-dev Bot <[email protected]>
1 parent 5a198e7 commit faa8294

File tree

1 file changed

+4
-47
lines changed

1 file changed

+4
-47
lines changed

README.md

Lines changed: 4 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,5 @@
1-
# Rust bindings for accessing the Go containers/image stack
1+
# Common synchronized files
22

3-
This crate contains a Rust API that forks `/usr/bin/skopeo` and
4-
talks to it via a custom API. You can use it to fetch container
5-
images in a streaming fashion.
6-
7-
At the time of this writing, you will need skopeo 1.6.0 or later.
8-
9-
# Why?
10-
11-
First, assume one is operating on a codebase that isn't Go, but wants
12-
to interact with container images - we can't just include the Go containers/image
13-
library.
14-
15-
The primary intended use case of this is for things like
16-
[ostree-containers](https://github.com/ostreedev/ostree-rs-ext/issues/18)
17-
where we're using container images to encapsulate host operating system
18-
updates, but we don't want to involve the [containers/image](github.com/containers/image/)
19-
storage layer.
20-
21-
What we *do* want from the containers/image library is support for things like
22-
signatures and offline mirroring. More on this below.
23-
24-
Forgetting things like ostree exist for a second - imagine that you wanted to
25-
encapsulate a set of Debian/RPM/etc packages inside
26-
a container image to ship for package-based operating systems. You could use this to stream
27-
out the layer containing those packages and extract them directly, rather than serializing
28-
everything to disk in the containers/storage disk location, only to copy it out again and delete the first.
29-
30-
Another theoretical use case could be something like [krustlet](https://github.com/deislabs/krustlet),
31-
which fetches WebAssembly blobs inside containers. Here again, we don't want to involve
32-
containers/storage.
33-
34-
# Desired containers/image features
35-
36-
There are e.g. Rust libraries like [dkregistry-rs](https://github.com/camallo/dkregistry-rs) and
37-
[oci-distribution](https://crates.io/crates/oci-distribution) and similar for other languages.
38-
39-
However, the containers/image Go library has a lot of additional infrastructure
40-
that will impose a maintenance burden to replicate:
41-
42-
- Signatures (`man containers-auth.json`)
43-
- Mirroring/renaming (`man containers-registries.conf`)
44-
- Support for `~/.docker/config.json` for authentication as well as `/run`
45-
46-
# Status
47-
48-
API is subject to change.
3+
Files placed in this repository are automatically
4+
synchronized (via a pull request) to all repositories
5+
in the bootc-dev organization.

0 commit comments

Comments
 (0)