---
description: High-level overview of the Registry
keywords: registry, on-prem, images, tags, repository, distribution
title: Distribution Registry
---

## What it is

The Registry is a stateless, highly scalable server side application that stores
and lets you distribute container images. The Registry is open-source, under the
permissive [Apache license](https://en.wikipedia.org/wiki/Apache_License).

## Why use it

You should use the Registry if you want to:

 * tightly control where your images are being stored
 * fully own your images distribution pipeline
 * integrate image storage and distribution tightly into your in-house development workflow

## Alternatives

Users looking for a zero maintenance, ready-to-go solution are encouraged to
use one of the existing registry services. Many of these provide support and security
scanning, and are free for public repositories. For example:
- [Docker Hub](https://hub.docker.com)
- [Quay.io](https://quay.io/)
- [GitHub Packages](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry)

Cloud infrastructure providers such as [AWS](https://aws.amazon.com/ecr/), [Azure](https://azure.microsoft.com/products/container-registry/), [Google Cloud](https://cloud.google.com/artifact-registry) and [IBM Cloud](https://www.ibm.com/products/container-registry) also have container registry services available at a cost.

## Compatibility

The distribution registry implements the [OCI Distribution Spec](https://github.com/opencontainers/distribution-spec) version 1.0.1.

## Basic commands

Start your registry

```sh
docker run -d -p 5000:5000 --name registry registry:2
```

Pull (or build) some image from the hub

```sh
docker pull ubuntu
```

Tag the image so that it points to your registry

```sh
docker image tag ubuntu localhost:5000/myfirstimage
```

Push it

```sh
docker push localhost:5000/myfirstimage
```

Pull it back

```sh
docker pull localhost:5000/myfirstimage
```

Now stop your registry and remove all data

```sh
docker container stop registry && docker container rm -v registry
```

## Next

You should now read the [detailed introduction about the registry](about),
or jump directly to [deployment instructions](about/deploying).