Categorygithub.com/stealthycoder/distribution
modulepackage
0.0.0-20240122153004-13bcfc5aacc5
Repository: https://github.com/stealthycoder/distribution.git
Documentation: pkg.go.dev

# README

Distribution

The Docker toolset to pack, ship, store, and deliver content.

This repository provides the Docker Registry 2.0 implementation for storing and distributing Docker images. It supersedes the docker/docker-registry project with a new API design, focused around security and performance.

Circle CI GoDoc

This repository contains the following components:

ComponentDescription
registryAn implementation of the Docker Registry HTTP API V2 for use with docker 1.6+.
librariesA rich set of libraries for interacting with distribution components. Please see godoc for details. Note: These libraries are unstable.
specificationsDistribution related specifications are available in docs/spec
documentationDocker's full documentation set is available at docs.docker.com. This repository contains the subset related just to the registry.

How does this integrate with Docker engine?

This project should provide an implementation to a V2 API for use in the Docker core project. The API should be embeddable and simplify the process of securely pulling and pushing content from docker daemons.

What are the long term goals of the Distribution project?

The Distribution project has the further long term goal of providing a secure tool chain for distributing content. The specifications, APIs and tools should be as useful with Docker as they are without.

Our goal is to design a professional grade and extensible content distribution system that allow users to:

  • Enjoy an efficient, secured and reliable way to store, manage, package and exchange content
  • Hack/roll their own on top of healthy open-source components
  • Implement their own home made solution through good specs, and solid extensions mechanism.

More about Registry 2.0

The new registry implementation provides the following benefits:

  • faster push and pull
  • new, more efficient implementation
  • simplified deployment
  • pluggable storage backend
  • webhook notifications

For information on upcoming functionality, please see ROADMAP.md.

Who needs to deploy a registry?

By default, Docker users pull images from Docker's public registry instance. Installing Docker gives users this ability. Users can also push images to a repository on Docker's public registry, if they have a Docker Hub account.

For some users and even companies, this default behavior is sufficient. For others, it is not.

For example, users with their own software products may want to maintain a registry for private, company images. Also, you may wish to deploy your own image repository for images used to test or in continuous integration. For these use cases and others, deploying your own registry instance may be the better choice.

Migration to Registry 2.0

For those who have previously deployed their own registry based on the Registry 1.0 implementation and wish to deploy a Registry 2.0 while retaining images, data migration is required. A tool to assist with migration efforts has been created. For more information see docker/migrator.

Contribute

Please see CONTRIBUTING.md for details on how to contribute issues, fixes, and patches to this project. If you are contributing code, see the instructions for building a development environment.

Support

If any issues are encountered while using the Distribution project, several avenues are available for support:

IRC #docker-distribution on FreeNode
Issue Tracker github.com/docker/distribution/issues
Google Groups https://groups.google.com/a/dockerproject.org/forum/#!forum/distribution
Mailing List [email protected]

License

This project is distributed under Apache License, Version 2.0.

# Packages

No description provided by the author
No description provided by the author
Package context provides several utilities for working with Go's context in http requests.
No description provided by the author
No description provided by the author
Package health provides a generic health checking framework.
No description provided by the author
No description provided by the author
No description provided by the author
Package reference provides a general type to represent any way of referencing images within the registry.
Package registry provides the main entrypoints for running a registry.
No description provided by the author
Package uuid provides simple UUID generation.
No description provided by the author

# Functions

ManifestMediaTypes returns the supported media types for manifests.
RegisterManifestSchema registers an UnmarshalFunc for a given schema type.
UnmarshalManifest looks up manifest unmarshal functions based on MediaType.
WithManifestMediaTypes lists the media types the client wishes the server to provide.
WithTag allows a tag to be passed into Put.

# Variables

ErrAccessDenied is returned when an access to a requested resource is denied.
ErrBlobDigestUnsupported when blob digest is an unsupported version.
ErrBlobExists returned when blob already exists.
ErrBlobInvalidLength returned when the blob has an expected length on commit, meaning mismatched with the descriptor or an invalid value.
ErrBlobUnknown when blob is not found.
ErrBlobUploadUnknown returned when upload is not found.
ErrManifestNotModified is returned when a conditional manifest GetByTag returns nil due to the client indicating it has the latest version.
ErrSchemaV1Unsupported is returned when a client tries to upload a schema v1 manifest but the registry is configured to reject it.
ErrUnsupported is returned when an unimplemented or unsupported action is performed.
GlobalScope represents the full namespace scope which contains all other scopes.

# Structs

CreateOptions is a collection of blob creation modifiers relevant to general blob storage intended to be configured by the BlobCreateOption.Apply method.
Descriptor describes targeted content.
ErrBlobInvalidDigest returned when digest check fails.
ErrBlobMounted returned when a blob is mounted from another repository instead of initiating an upload session.
ErrManifestBlobUnknown returned when a referenced blob cannot be found.
ErrManifestNameInvalid should be used to denote an invalid manifest name.
ErrManifestUnknown is returned if the manifest is not known by the registry.
ErrManifestUnknownRevision is returned when a manifest cannot be found by revision within a repository.
ErrManifestUnverified is returned when the registry is unable to verify the manifest.
ErrRepositoryNameInvalid should be used to denote an invalid repository name.
ErrRepositoryUnknown is returned if the named repository is not known by the registry.
ErrTagUnknown is returned if the given tag is not known by the tag service.
WithManifestMediaTypesOption holds a list of accepted media types.
WithTagOption holds a tag.

# Interfaces

BlobCreateOption is a general extensible function argument for blob creation methods.
BlobDeleter enables deleting blobs from storage.
BlobDescriptorService manages metadata about a blob by digest.
BlobDescriptorServiceFactory creates middleware for BlobDescriptorService.
BlobEnumerator enables iterating over blobs from storage.
BlobIngester ingests blob data.
BlobProvider describes operations for getting blob data.
BlobServer can serve blobs via http.
BlobService combines the operations to access, read and write blobs.
BlobStatter makes blob descriptors available by digest.
BlobStore represent the entire suite of blob related operations.
BlobWriter provides a handle for inserting data into a blob store.
Describable is an interface for descriptors.
Manifest represents a registry object specifying a set of references and an optional target.
ManifestBuilder creates a manifest allowing one to include dependencies.
ManifestEnumerator enables iterating over manifests.
ManifestService describes operations on image manifests.
ManifestServiceOption is a function argument for Manifest Service methods.
Namespace represents a collection of repositories, addressable by name.
ReadSeekCloser is the primary reader type for blob data, combining io.ReadSeeker with io.Closer.
Repository is a named collection of manifests and layers.
RepositoryEnumerator describes an operation to enumerate repositories.
RepositoryRemover removes given repository.
Scope defines the set of items that match a namespace.
TagService provides access to information about tagged objects.

# Type aliases

ErrManifestVerification provides a type to collect errors encountered during manifest verification.
UnmarshalFunc implements manifest unmarshalling a given MediaType.