Documentation ¶
Index ¶
- Variables
- func NewLayerProvidersFromStores(lss map[string]layer.Store) map[string]PushLayerProvider
- func NewV2Repository(ctx context.Context, repoInfo *registry.RepositoryInfo, ...) (repo distribution.Repository, foundVersion bool, err error)
- func Pull(ctx context.Context, ref reference.Named, imagePullConfig *ImagePullConfig, ...) error
- func Push(ctx context.Context, ref reference.Named, imagePushConfig *ImagePushConfig) error
- func TranslatePullError(err error, ref reference.Named) error
- func ValidateRepoName(name reference.Named) error
- type Config
- type ContentStore
- type ErrNoSupport
- type ImageConfigPullError
- type ImageConfigStore
- type ImagePullConfig
- type ImagePushConfig
- type Puller
- type PushLayer
- type PushLayerProvider
- type Pusher
- type RootFSDownloadManager
Constants ¶
This section is empty.
Variables ¶
var ImageTypes = []string{ schema2.MediaTypeImageConfig, ocispec.MediaTypeImageConfig, "application/octet-stream", "application/json", "text/html", "", }
ImageTypes represents the schema2 config types for images
var PluginTypes = []string{ schema2.MediaTypePluginConfig, }
PluginTypes represents the schema2 config types for plugins
Functions ¶
func NewLayerProvidersFromStores ¶
func NewLayerProvidersFromStores(lss map[string]layer.Store) map[string]PushLayerProvider
NewLayerProvidersFromStores returns layer providers backed by an instance of LayerStore. Only getting layers as gzipped tars is supported.
func NewV2Repository ¶
func NewV2Repository( ctx context.Context, repoInfo *registry.RepositoryInfo, endpoint registry.APIEndpoint, metaHeaders http.Header, authConfig *types.AuthConfig, actions ...string, ) (repo distribution.Repository, foundVersion bool, err error)
NewV2Repository returns a repository (v2 only). It creates an HTTP transport providing timeout settings and authentication support, and also verifies the remote API version.
func Pull ¶
func Pull(ctx context.Context, ref reference.Named, imagePullConfig *ImagePullConfig, local ContentStore) error
Pull initiates a pull operation. image is the repository name to pull, and tag may be either empty, or indicate a specific tag to pull.
func Push ¶
Push initiates a push operation on ref. ref is the specific variant of the image to be pushed. If no tag is provided, all tags will be pushed.
func TranslatePullError ¶ added in v1.13.0
TranslatePullError is used to convert an error from a registry pull operation to an error representing the entire pull operation. Any error information which is not used by the returned error gets output to log at info level.
func ValidateRepoName ¶ added in v1.12.0
ValidateRepoName validates the name of a repository.
Types ¶
type Config ¶ added in v1.13.0
type Config struct { // MetaHeaders stores HTTP headers with metadata about the image MetaHeaders map[string][]string // AuthConfig holds authentication credentials for authenticating with // the registry. AuthConfig *types.AuthConfig // ProgressOutput is the interface for showing the status of the pull // operation. ProgressOutput progress.Output // RegistryService is the registry service to use for TLS configuration // and endpoint lookup. RegistryService registry.Service // ImageEventLogger notifies events for a given image ImageEventLogger func(id, name, action string) // MetadataStore is the storage backend for distribution-specific // metadata. MetadataStore metadata.Store // ImageStore manages images. ImageStore ImageConfigStore // ReferenceStore manages tags. This value is optional, when excluded // content will not be tagged. ReferenceStore refstore.Store // RequireSchema2 ensures that only schema2 manifests are used. RequireSchema2 bool }
Config stores configuration for communicating with a registry.
type ContentStore ¶
type ContentStore interface { content.Ingester content.Provider Info(ctx context.Context, dgst digest.Digest) (content.Info, error) Abort(ctx context.Context, ref string) error }
ContentStore is the interface used to persist registry blobs
Currently this is only used to persist manifests and manifest lists. It is exported because `distribution.Pull` takes one as an argument.
type ErrNoSupport ¶ added in v1.11.0
type ErrNoSupport struct{ Err error }
ErrNoSupport is an error type used for errors indicating that an operation is not supported. It encapsulates a more specific error.
func (ErrNoSupport) Error ¶ added in v1.11.0
func (e ErrNoSupport) Error() string
type ImageConfigPullError ¶ added in v1.11.0
type ImageConfigPullError struct {
Err error
}
ImageConfigPullError is an error pulling the image config blob (only applies to schema2).
func (ImageConfigPullError) Error ¶ added in v1.11.0
func (e ImageConfigPullError) Error() string
Error returns the error string for ImageConfigPullError.
type ImageConfigStore ¶ added in v1.13.0
type ImageConfigStore interface { Put(context.Context, []byte) (digest.Digest, error) Get(context.Context, digest.Digest) ([]byte, error) RootFSFromConfig([]byte) (*image.RootFS, error) PlatformFromConfig([]byte) (*specs.Platform, error) }
ImageConfigStore handles storing and getting image configurations by digest. Allows getting an image configurations rootfs from the configuration.
func NewImageConfigStoreFromStore ¶ added in v1.13.0
func NewImageConfigStoreFromStore(is image.Store) ImageConfigStore
NewImageConfigStoreFromStore returns an ImageConfigStore backed by an image.Store for container images.
type ImagePullConfig ¶
type ImagePullConfig struct { Config // DownloadManager manages concurrent pulls. DownloadManager RootFSDownloadManager // Schema2Types is the valid schema2 configuration types allowed // by the pull operation. Schema2Types []string // Platform is the requested platform of the image being pulled Platform *specs.Platform }
ImagePullConfig stores pull configuration.
type ImagePushConfig ¶
type ImagePushConfig struct { Config // ConfigMediaType is the configuration media type for // schema2 manifests. ConfigMediaType string // LayerStores (indexed by operating system) manages layers. LayerStores map[string]PushLayerProvider // TrustKey is the private key for legacy signatures. This is typically // an ephemeral key, since these signatures are no longer verified. TrustKey libtrust.PrivateKey // UploadManager dispatches uploads. UploadManager *xfer.LayerUploadManager }
ImagePushConfig stores push configuration.
type Puller ¶
type Puller interface { // Pull tries to pull the image referenced by `tag` // Pull returns an error if any, as well as a boolean that determines whether to retry Pull on the next configured endpoint. // Pull(ctx context.Context, ref reference.Named, platform *specs.Platform) error }
Puller is an interface that abstracts pulling for different API versions.
type PushLayer ¶ added in v1.13.0
type PushLayer interface { ChainID() layer.ChainID DiffID() layer.DiffID Parent() PushLayer Open() (io.ReadCloser, error) Size() (int64, error) MediaType() string Release() }
PushLayer is a pushable layer with metadata about the layer and access to the content of the layer.
type PushLayerProvider ¶ added in v1.13.0
PushLayerProvider provides layers to be pushed by ChainID.
type Pusher ¶
type Pusher interface { // Push tries to push the image configured at the creation of Pusher. // Push returns an error if any, as well as a boolean that determines whether to retry Push on the next configured endpoint. // // TODO(tiborvass): have Push() take a reference to repository + tag, so that the pusher itself is repository-agnostic. Push(ctx context.Context) error }
Pusher is an interface that abstracts pushing for different API versions.
func NewPusher ¶
func NewPusher(ref reference.Named, endpoint registry.APIEndpoint, repoInfo *registry.RepositoryInfo, imagePushConfig *ImagePushConfig) (Pusher, error)
NewPusher creates a new Pusher interface that will push to either a v1 or v2 registry. The endpoint argument contains a Version field that determines whether a v1 or v2 pusher will be created. The other parameters are passed through to the underlying pusher implementation for use during the actual push operation.
type RootFSDownloadManager ¶ added in v1.13.0
type RootFSDownloadManager interface { // Download downloads the layers into the given initial rootfs and // returns the final rootfs. // Given progress output to track download progress // Returns function to release download resources Download(ctx context.Context, initialRootFS image.RootFS, os string, layers []xfer.DownloadDescriptor, progressOutput progress.Output) (image.RootFS, func(), error) }
RootFSDownloadManager handles downloading of the rootfs