go-containerregistry

module
v0.1.3-0...-0b0730e Latest Latest
Warning

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

Go to latest
Published: Sep 15, 2020 License: Apache-2.0

README

go-containerregistry

Build Status GoDoc Go Report Card Code Coverage

Introduction

This is a golang library for working with container registries. It's largely based on the Python library of the same name.

The following diagram shows the main types that this library handles. OCI image representation

Philosophy

This library primarily revolves around an Image interface (and to a lesser extent, ImageIndex and Layer).

There are a number of packages for reading/writing these interfaces from/to various formats.

The main focus has been registry interactions (hence the name) via the remote package, but we have implemented other formats as we needed them to interoperate with various tools.

v1.Image
Sources
Sinks
v1.ImageIndex
Sources
Sinks
v1.Layer
Sources
Sinks

Overview

mutate

The simplest use for these libraries is to read from one source and write to another.

For example,

  • crane pull is remote.Image -> tarball.Write,
  • crane push is tarball.Image -> remote.Write,
  • crane cp is remote.Image -> remote.Write.

However, often you actually want to change something about an image. This is the purpose of the mutate package, which exposes some commonly useful things to change about an image.

partial

If you're trying to use this library with a different source or sink than it already supports, it can be somewhat cumbersome. The Image and Layer interfaces are pretty wide, with a lot of redundant information. This is somewhat by design, because we want to expose this information as efficiently as possible where we can, but again it is a pain to implement yourself.

The purpose of the partial package is to make implementing a v1.Image much easier, by filling in all the derived accessors for you if you implement a minimal subset of v1.Image.

transport

You might think our abstractions are bad and you just want to authenticate and send requests to a registry.

This is the purpose of the transport and authn packages.

Tools

This repo hosts some tools built on top of the library.

crane

crane is a tool for interacting with remote images and registries.

gcrane

gcrane is a GCR-specific variant of crane that has richer output for the ls subcommand and some basic garbage collection support.

k8schain

k8schain implements the authentication semantics use by kubelets in a way that is easily consumable by this library.

k8schain is not a standalone tool, but it's linked here for visibility.

Emeritus: ko

This tool was originally developed in this repo but has since been moved to its own repo.

Directories

Path Synopsis
cmd
pkg
authn
Package authn defines different methods of authentication for talking to a container registry.
Package authn defines different methods of authentication for talking to a container registry.
authn/k8schain
Package k8schain exposes an implementation of the authn.Keychain interface based on the semantics the Kubelet follows when pulling the images for a Pod in Kubernetes.
Package k8schain exposes an implementation of the authn.Keychain interface based on the semantics the Kubelet follows when pulling the images for a Pod in Kubernetes.
crane
Package crane holds libraries used to implement the crane CLI.
Package crane holds libraries used to implement the crane CLI.
gcrane
Package gcrane holds libraries used to implement the gcrane CLI.
Package gcrane holds libraries used to implement the gcrane CLI.
internal/compare
Package compare provides methods for comparing images, indexes, and layers.
Package compare provides methods for comparing images, indexes, and layers.
internal/httptest
Package httptest provides a method for testing a TLS server a la net/http/httptest.
Package httptest provides a method for testing a TLS server a la net/http/httptest.
internal/legacy
Package legacy provides methods for interacting with legacy image formats.
Package legacy provides methods for interacting with legacy image formats.
internal/retry
Package retry provides methods for retrying operations.
Package retry provides methods for retrying operations.
internal/retry/wait
Package wait is a subset of k8s.io/apimachinery to avoid conflicts in dependencies (specifically, logging).
Package wait is a subset of k8s.io/apimachinery to avoid conflicts in dependencies (specifically, logging).
legacy
Package legacy provides functionality to work with docker images in the v1 format.
Package legacy provides functionality to work with docker images in the v1 format.
legacy/tarball
Package tarball provides facilities for writing v1 docker images (https://github.com/moby/moby/blob/master/image/spec/v1.md) from/to a tarball on-disk.
Package tarball provides facilities for writing v1 docker images (https://github.com/moby/moby/blob/master/image/spec/v1.md) from/to a tarball on-disk.
logs
Package logs exposes the loggers used by this library.
Package logs exposes the loggers used by this library.
name
Package name defines structured types for representing image references.
Package name defines structured types for representing image references.
registry
Package registry implements a docker V2 registry and the OCI distribution specification.
Package registry implements a docker V2 registry and the OCI distribution specification.
v1
Package v1 defines structured types for OCI v1 images
Package v1 defines structured types for OCI v1 images
v1/cache
Package cache provides methods to cache layers.
Package cache provides methods to cache layers.
v1/daemon
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.
v1/empty
Package empty provides an implementation of v1.Image equivalent to "FROM scratch".
Package empty provides an implementation of v1.Image equivalent to "FROM scratch".
v1/fake
Code generated by counterfeiter.
Code generated by counterfeiter.
v1/google
Package google provides facilities for listing images in gcr.io.
Package google provides facilities for listing images in gcr.io.
v1/layout
Package layout provides facilities for reading/writing artifacts from/to an OCI image layout on disk, see: https://github.com/opencontainers/image-spec/blob/master/image-layout.md
Package layout provides facilities for reading/writing artifacts from/to an OCI image layout on disk, see: https://github.com/opencontainers/image-spec/blob/master/image-layout.md
v1/mutate
Package mutate provides facilities for mutating v1.Images of any kind.
Package mutate provides facilities for mutating v1.Images of any kind.
v1/partial
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.
v1/random
Package random provides a facility for synthesizing pseudo-random images.
Package random provides a facility for synthesizing pseudo-random images.
v1/remote
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.
v1/remote/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.
v1/tarball
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.
v1/validate
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