Module unencapsulate

Module unencapsulate 

Source
Expand description

APIs for “unencapsulating” OSTree commits from container images

This code only operates on container images that were created via encapsulate.

§External dependency on container-image-proxy

This code requires https://github.com/cgwalters/container-image-proxy installed as a binary in $PATH.

The rationale for this is that while there exist Rust crates to speak the Docker distribution API, the Go library https://github.com/containers/image/ supports key things we want for production use like:

  • Image mirroring and remapping; effectively man containers-registries.conf For example, we need to support an administrator mirroring an ostree-container into a disconnected registry, without changing all the pull specs.
  • Signing

Additionally, the proxy “upconverts” manifests into OCI, so we don’t need to care about parsing the Docker manifest format (as used by most registries still).

Structs§

Import
The result of an import operation
ProgressReader 🔒
A read wrapper that updates the download progress.

Functions§

fetch_layer 🔒
A wrapper for [get_blob] which fetches a layer and decompresses it.
fetch_manifest
Download the manifest for a target image and its sha256 digest.
fetch_manifest_and_config
Download the manifest for a target image and its sha256 digest, as well as the image configuration.
fetch_manifest_impl 🔒
join_fetch 🔒
Use this to process potential errors from a worker and a driver. This is really a brutal hack around the fact that an error can occur on either our side or in the proxy. But if an error occurs on our side, then we will close the pipe, which will also cause the proxy to error out.
unencapsulate
Fetch a container image and import its embedded OSTree commit.

Type Aliases§

Progress 🔒