v1

package
v0.17.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2023 License: Apache-2.0 Imports: 11 Imported by: 1,189

Documentation

Overview

Package v1 defines structured types for OCI v1 images

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Hasher

func Hasher(name string) (hash.Hash, error)

Hasher returns a hash.Hash for the named algorithm (e.g. "sha256")

Types

type Config

type Config struct {
	AttachStderr    bool                `json:"AttachStderr,omitempty"`
	AttachStdin     bool                `json:"AttachStdin,omitempty"`
	AttachStdout    bool                `json:"AttachStdout,omitempty"`
	Cmd             []string            `json:"Cmd,omitempty"`
	Healthcheck     *HealthConfig       `json:"Healthcheck,omitempty"`
	Domainname      string              `json:"Domainname,omitempty"`
	Entrypoint      []string            `json:"Entrypoint,omitempty"`
	Env             []string            `json:"Env,omitempty"`
	Hostname        string              `json:"Hostname,omitempty"`
	Image           string              `json:"Image,omitempty"`
	Labels          map[string]string   `json:"Labels,omitempty"`
	OnBuild         []string            `json:"OnBuild,omitempty"`
	OpenStdin       bool                `json:"OpenStdin,omitempty"`
	StdinOnce       bool                `json:"StdinOnce,omitempty"`
	Tty             bool                `json:"Tty,omitempty"`
	User            string              `json:"User,omitempty"`
	Volumes         map[string]struct{} `json:"Volumes,omitempty"`
	WorkingDir      string              `json:"WorkingDir,omitempty"`
	ExposedPorts    map[string]struct{} `json:"ExposedPorts,omitempty"`
	ArgsEscaped     bool                `json:"ArgsEscaped,omitempty"`
	NetworkDisabled bool                `json:"NetworkDisabled,omitempty"`
	MacAddress      string              `json:"MacAddress,omitempty"`
	StopSignal      string              `json:"StopSignal,omitempty"`
	Shell           []string            `json:"Shell,omitempty"`
}

Config is a submessage of the config file described as:

The execution parameters which SHOULD be used as a base when running
a container using the image.

The names of the fields in this message are chosen to reflect the JSON payload of the Config as defined here: https://git.io/vrAET and https://github.com/opencontainers/image-spec/blob/master/config.md

func (*Config) DeepCopy

func (in *Config) DeepCopy() *Config

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Config.

func (*Config) DeepCopyInto

func (in *Config) DeepCopyInto(out *Config)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ConfigFile

type ConfigFile struct {
	Architecture  string    `json:"architecture"`
	Author        string    `json:"author,omitempty"`
	Container     string    `json:"container,omitempty"`
	Created       Time      `json:"created,omitempty"`
	DockerVersion string    `json:"docker_version,omitempty"`
	History       []History `json:"history,omitempty"`
	OS            string    `json:"os"`
	RootFS        RootFS    `json:"rootfs"`
	Config        Config    `json:"config"`
	OSVersion     string    `json:"os.version,omitempty"`
	Variant       string    `json:"variant,omitempty"`
	OSFeatures    []string  `json:"os.features,omitempty"`
}

ConfigFile is the configuration file that holds the metadata describing how to launch a container. See: https://github.com/opencontainers/image-spec/blob/master/config.md

docker_version and os.version are not part of the spec but included for backwards compatibility.

func ParseConfigFile

func ParseConfigFile(r io.Reader) (*ConfigFile, error)

ParseConfigFile parses the io.Reader's contents into a ConfigFile.

func (*ConfigFile) DeepCopy

func (in *ConfigFile) DeepCopy() *ConfigFile

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigFile.

func (*ConfigFile) DeepCopyInto

func (in *ConfigFile) DeepCopyInto(out *ConfigFile)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ConfigFile) Platform added in v0.14.0

func (cf *ConfigFile) Platform() *Platform

Platform attempts to generates a Platform from the ConfigFile fields.

type Descriptor

type Descriptor struct {
	MediaType    types.MediaType   `json:"mediaType"`
	Size         int64             `json:"size"`
	Digest       Hash              `json:"digest"`
	Data         []byte            `json:"data,omitempty"`
	URLs         []string          `json:"urls,omitempty"`
	Annotations  map[string]string `json:"annotations,omitempty"`
	Platform     *Platform         `json:"platform,omitempty"`
	ArtifactType string            `json:"artifactType,omitempty"`
}

Descriptor holds a reference from the manifest to one of its constituent elements.

func (*Descriptor) DeepCopy

func (in *Descriptor) DeepCopy() *Descriptor

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Descriptor.

func (*Descriptor) DeepCopyInto

func (in *Descriptor) DeepCopyInto(out *Descriptor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Hash

type Hash struct {
	// Algorithm holds the algorithm used to compute the hash.
	Algorithm string

	// Hex holds the hex portion of the content hash.
	Hex string
}

Hash is an unqualified digest of some content, e.g. sha256:deadbeef

func NewHash

func NewHash(s string) (Hash, error)

NewHash validates the input string is a hash and returns a strongly type Hash object.

func SHA256

func SHA256(r io.Reader) (Hash, int64, error)

SHA256 computes the Hash of the provided io.Reader's content.

func (*Hash) DeepCopy

func (in *Hash) DeepCopy() *Hash

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Hash.

func (*Hash) DeepCopyInto

func (in *Hash) DeepCopyInto(out *Hash)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (Hash) MarshalJSON

func (h Hash) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler

func (Hash) MarshalText

func (h Hash) MarshalText() (text []byte, err error)

MarshalText implements encoding.TextMarshaler. This is required to use v1.Hash as a key in a map when marshalling JSON.

func (Hash) String

func (h Hash) String() string

String reverses NewHash returning the string-form of the hash.

func (*Hash) UnmarshalJSON

func (h *Hash) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler

func (*Hash) UnmarshalText

func (h *Hash) UnmarshalText(text []byte) error

UnmarshalText implements encoding.TextUnmarshaler. This is required to use v1.Hash as a key in a map when unmarshalling JSON.

type HealthConfig

type HealthConfig struct {
	// Test is the test to perform to check that the container is healthy.
	// An empty slice means to inherit the default.
	// The options are:
	// {} : inherit healthcheck
	// {"NONE"} : disable healthcheck
	// {"CMD", args...} : exec arguments directly
	// {"CMD-SHELL", command} : run command with system's default shell
	Test []string `json:",omitempty"`

	// Zero means to inherit. Durations are expressed as integer nanoseconds.
	Interval    time.Duration `json:",omitempty"` // Interval is the time to wait between checks.
	Timeout     time.Duration `json:",omitempty"` // Timeout is the time to wait before considering the check to have hung.
	StartPeriod time.Duration `json:",omitempty"` // The start period for the container to initialize before the retries starts to count down.

	// Retries is the number of consecutive failures needed to consider a container as unhealthy.
	// Zero means inherit.
	Retries int `json:",omitempty"`
}

HealthConfig holds configuration settings for the HEALTHCHECK feature.

func (*HealthConfig) DeepCopy

func (in *HealthConfig) DeepCopy() *HealthConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthConfig.

func (*HealthConfig) DeepCopyInto

func (in *HealthConfig) DeepCopyInto(out *HealthConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type History

type History struct {
	Author     string `json:"author,omitempty"`
	Created    Time   `json:"created,omitempty"`
	CreatedBy  string `json:"created_by,omitempty"`
	Comment    string `json:"comment,omitempty"`
	EmptyLayer bool   `json:"empty_layer,omitempty"`
}

History is one entry of a list recording how this container image was built.

func (*History) DeepCopy

func (in *History) DeepCopy() *History

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new History.

func (*History) DeepCopyInto

func (in *History) DeepCopyInto(out *History)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Image

type Image interface {
	// Layers returns the ordered collection of filesystem layers that comprise this image.
	// The order of the list is oldest/base layer first, and most-recent/top layer last.
	Layers() ([]Layer, error)

	// MediaType of this image's manifest.
	MediaType() (types.MediaType, error)

	// Size returns the size of the manifest.
	Size() (int64, error)

	// ConfigName returns the hash of the image's config file, also known as
	// the Image ID.
	ConfigName() (Hash, error)

	// ConfigFile returns this image's config file.
	ConfigFile() (*ConfigFile, error)

	// RawConfigFile returns the serialized bytes of ConfigFile().
	RawConfigFile() ([]byte, error)

	// Digest returns the sha256 of this image's manifest.
	Digest() (Hash, error)

	// Manifest returns this image's Manifest object.
	Manifest() (*Manifest, error)

	// RawManifest returns the serialized bytes of Manifest()
	RawManifest() ([]byte, error)

	// LayerByDigest returns a Layer for interacting with a particular layer of
	// the image, looking it up by "digest" (the compressed hash).
	LayerByDigest(Hash) (Layer, error)

	// LayerByDiffID is an analog to LayerByDigest, looking up by "diff id"
	// (the uncompressed hash).
	LayerByDiffID(Hash) (Layer, error)
}

Image defines the interface for interacting with an OCI v1 image.

type ImageIndex

type ImageIndex interface {
	// MediaType of this image's manifest.
	MediaType() (types.MediaType, error)

	// Digest returns the sha256 of this index's manifest.
	Digest() (Hash, error)

	// Size returns the size of the manifest.
	Size() (int64, error)

	// IndexManifest returns this image index's manifest object.
	IndexManifest() (*IndexManifest, error)

	// RawManifest returns the serialized bytes of IndexManifest().
	RawManifest() ([]byte, error)

	// Image returns a v1.Image that this ImageIndex references.
	Image(Hash) (Image, error)

	// ImageIndex returns a v1.ImageIndex that this ImageIndex references.
	ImageIndex(Hash) (ImageIndex, error)
}

ImageIndex defines the interface for interacting with an OCI image index.

type IndexManifest

type IndexManifest struct {
	SchemaVersion int64             `json:"schemaVersion"`
	MediaType     types.MediaType   `json:"mediaType,omitempty"`
	Manifests     []Descriptor      `json:"manifests"`
	Annotations   map[string]string `json:"annotations,omitempty"`
	Subject       *Descriptor       `json:"subject,omitempty"`
}

IndexManifest represents an OCI image index in a structured way.

func ParseIndexManifest

func ParseIndexManifest(r io.Reader) (*IndexManifest, error)

ParseIndexManifest parses the io.Reader's contents into an IndexManifest.

func (*IndexManifest) DeepCopy

func (in *IndexManifest) DeepCopy() *IndexManifest

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexManifest.

func (*IndexManifest) DeepCopyInto

func (in *IndexManifest) DeepCopyInto(out *IndexManifest)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Layer

type Layer interface {
	// Digest returns the Hash of the compressed layer.
	Digest() (Hash, error)

	// DiffID returns the Hash of the uncompressed layer.
	DiffID() (Hash, error)

	// Compressed returns an io.ReadCloser for the compressed layer contents.
	Compressed() (io.ReadCloser, error)

	// Uncompressed returns an io.ReadCloser for the uncompressed layer contents.
	Uncompressed() (io.ReadCloser, error)

	// Size returns the compressed size of the Layer.
	Size() (int64, error)

	// MediaType returns the media type of the Layer.
	MediaType() (types.MediaType, error)
}

Layer is an interface for accessing the properties of a particular layer of a v1.Image

type Manifest

type Manifest struct {
	SchemaVersion int64             `json:"schemaVersion"`
	MediaType     types.MediaType   `json:"mediaType,omitempty"`
	Config        Descriptor        `json:"config"`
	Layers        []Descriptor      `json:"layers"`
	Annotations   map[string]string `json:"annotations,omitempty"`
	Subject       *Descriptor       `json:"subject,omitempty"`
}

Manifest represents the OCI image manifest in a structured way.

func ParseManifest

func ParseManifest(r io.Reader) (*Manifest, error)

ParseManifest parses the io.Reader's contents into a Manifest.

func (*Manifest) DeepCopy

func (in *Manifest) DeepCopy() *Manifest

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Manifest.

func (*Manifest) DeepCopyInto

func (in *Manifest) DeepCopyInto(out *Manifest)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Platform

type Platform struct {
	Architecture string   `json:"architecture"`
	OS           string   `json:"os"`
	OSVersion    string   `json:"os.version,omitempty"`
	OSFeatures   []string `json:"os.features,omitempty"`
	Variant      string   `json:"variant,omitempty"`
	Features     []string `json:"features,omitempty"`
}

Platform represents the target os/arch for an image.

func ParsePlatform added in v0.9.0

func ParsePlatform(s string) (*Platform, error)

ParsePlatform parses a string representing a Platform, if possible.

func (*Platform) DeepCopy

func (in *Platform) DeepCopy() *Platform

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Platform.

func (*Platform) DeepCopyInto

func (in *Platform) DeepCopyInto(out *Platform)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (Platform) Equals added in v0.2.0

func (p Platform) Equals(o Platform) bool

Equals returns true if the given platform is semantically equivalent to this one. The order of Features and OSFeatures is not important.

func (Platform) Satisfies added in v0.14.0

func (p Platform) Satisfies(spec Platform) bool

Satisfies returns true if this Platform "satisfies" the given spec Platform.

Note that this is different from Equals and that Satisfies is not reflexive.

The given spec represents "requirements" such that any missing values in the spec are not compared.

For OSFeatures and Features, Satisfies will return true if this Platform's fields contain a superset of the values in the spec's fields (order ignored).

func (Platform) String added in v0.9.0

func (p Platform) String() string

type RootFS

type RootFS struct {
	Type    string `json:"type"`
	DiffIDs []Hash `json:"diff_ids"`
}

RootFS holds the ordered list of file system deltas that comprise the container image's root filesystem.

func (*RootFS) DeepCopy

func (in *RootFS) DeepCopy() *RootFS

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootFS.

func (*RootFS) DeepCopyInto

func (in *RootFS) DeepCopyInto(out *RootFS)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Time

type Time struct {
	time.Time
}

Time is a wrapper around time.Time to help with deep copying

func (*Time) DeepCopy

func (in *Time) DeepCopy() *Time

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Time.

func (*Time) DeepCopyInto

func (t *Time) DeepCopyInto(out *Time)

DeepCopyInto creates a deep-copy of the Time value. The underlying time.Time type is effectively immutable in the time API, so it is safe to copy-by-assign, despite the presence of (unexported) Pointer fields.

type Update

type Update struct {
	Total    int64
	Complete int64
	Error    error
}

Update representation of an update of transfer progress. Some functions in this module can take a channel to which updates will be sent while a transfer is in progress. +k8s:deepcopy-gen=false

Directories

Path Synopsis
Package cache provides methods to cache layers.
Package cache provides methods to cache layers.
Package daemon provides facilities for reading/writing v1.Image from/to a running daemon.
Package daemon provides facilities for reading/writing v1.Image from/to a running daemon.
Package empty provides an implementation of v1.Image equivalent to "FROM scratch".
Package empty provides an implementation of v1.Image equivalent to "FROM scratch".
Code generated by counterfeiter.
Code generated by counterfeiter.
Package google provides facilities for listing images in gcr.io.
Package google provides facilities for listing images in gcr.io.
Package layout provides facilities for reading/writing artifacts from/to an OCI image layout on disk, see:
Package layout provides facilities for reading/writing artifacts from/to an OCI image layout on disk, see:
Package match provides functionality for conveniently matching a v1.Descriptor.
Package match provides functionality for conveniently matching a v1.Descriptor.
Package mutate provides facilities for mutating v1.Images of any kind.
Package mutate provides facilities for mutating v1.Images of any kind.
Package partial defines methods for building up a v1.Image from minimal subsets that are sufficient for defining a v1.Image.
Package partial defines methods for building up a v1.Image from minimal subsets that are sufficient for defining a v1.Image.
Package random provides a facility for synthesizing pseudo-random images.
Package random provides a facility for synthesizing pseudo-random images.
Package remote provides facilities for reading/writing v1.Images from/to a remote image registry.
Package remote provides facilities for reading/writing v1.Images from/to a remote image registry.
transport
Package transport provides facilities for setting up an authenticated http.RoundTripper given an Authenticator and base RoundTripper.
Package transport provides facilities for setting up an authenticated http.RoundTripper given an Authenticator and base RoundTripper.
Package stream implements a single-pass streaming v1.Layer.
Package stream implements a single-pass streaming v1.Layer.
Package tarball provides facilities for reading/writing v1.Images from/to a tarball on-disk.
Package tarball provides facilities for reading/writing v1.Images from/to a tarball on-disk.
Package types holds common OCI media types.
Package types holds common OCI media types.
Package validate provides methods for validating image correctness.
Package validate provides methods for validating image correctness.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL