package
0.20.3
Repository: https://github.com/google/go-containerregistry.git
Documentation: pkg.go.dev

# README

mutate

GoDoc

The v1.Image, v1.ImageIndex, and v1.Layer interfaces provide only accessor methods, so they are essentially immutable. If you want to change something about them, you need to produce a new instance of that interface.

A common use case for this library is to read an image from somewhere (a source), change something about it, and write the image somewhere else (a sink).

Graphically, this looks something like:

Mutations

This is obviously not a comprehensive set of useful transformations (PRs welcome!), but a rough summary of what the mutate package currently does:

Config and ConfigFile

These allow you to change the image configuration, e.g. to change the entrypoint, environment, author, etc.

Time, Canonical, and CreatedAt

These are useful in the context of reproducible builds, where you may want to strip timestamps and other non-reproducible information.

Append, AppendLayers, and AppendManifests

These functions allow the extension of a v1.Image or v1.ImageIndex with new layers or manifests.

For constructing an image FROM scratch, see the empty package.

MediaType and IndexMediaType

Sometimes, it is necessary to change the media type of an image or index, e.g. to appease a registry with strict validation of images (looking at you, GCR).

Rebase

Rebase has its own README.

This is the underlying implementation of crane rebase.

Extract

Extract will flatten an image filesystem into a single tar stream, respecting whiteout files.

This is the underlying implementation of crane export.

# Functions

Annotations mutates the annotations on an annotatable image or index manifest.
Append will apply the list of addendums to the base image.
AppendLayers applies layers to a base image.
AppendManifests appends a manifest to the ImageIndex.
Canonical is a helper function to combine Time and configFile to remove any randomness during a docker build.
Config mutates the provided v1.Image to have the provided v1.Config.
ConfigFile mutates the provided v1.Image to have the provided v1.ConfigFile.
ConfigMediaType modifies the MediaType() of the given image's Config.
CreatedAt mutates the provided v1.Image to have the provided v1.Time.
Extract takes an image and returns an io.ReadCloser containing the image's flattened filesystem.
IndexMediaType modifies the MediaType() of the given index.
MediaType modifies the MediaType() of the given image.
Rebase returns a new v1.Image where the oldBase in orig is replaced by newBase.
RemoveManifests removes any descriptors that match the match.Matcher.
Subject mutates the subject on an image or index manifest.
Time sets all timestamps in an image to the given timestamp.

# Structs

Addendum contains layers and history to be appended to a base image.
IndexAddendum represents an appendable thing and all the properties that we may want to override in the resulting v1.Descriptor.

# Interfaces

Appendable is an interface that represents something that can be appended to an ImageIndex.