76 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
---
 | 
						|
description: Explains what the Registry is, basic use cases and requirements
 | 
						|
keywords: registry, on-prem, images, tags, repository, distribution, use cases, requirements
 | 
						|
title: About Registry
 | 
						|
---
 | 
						|
 | 
						|
{% include registry.md %}
 | 
						|
 | 
						|
A registry is a storage and content delivery system, holding named Docker
 | 
						|
images, available in different tagged versions.
 | 
						|
 | 
						|
  > Example: the image `distribution/registry`, with tags `2.0` and `2.1`.
 | 
						|
 | 
						|
Users interact with a registry by using docker push and pull commands.
 | 
						|
 | 
						|
  > Example: `docker pull registry-1.docker.io/distribution/registry:2.1`.
 | 
						|
 | 
						|
Storage itself is delegated to drivers. The default storage driver is the local
 | 
						|
posix filesystem, which is suitable for development or small deployments.
 | 
						|
Additional cloud-based storage drivers like S3, Microsoft Azure, OpenStack Swift,
 | 
						|
and Aliyun OSS are also supported. People looking into using other storage
 | 
						|
backends may do so by writing their own driver implementing the
 | 
						|
[Storage API](storage-drivers/index.md).
 | 
						|
 | 
						|
Since securing access to your hosted images is paramount, the Registry natively
 | 
						|
supports TLS and basic authentication.
 | 
						|
 | 
						|
The Registry GitHub repository includes additional information about advanced
 | 
						|
authentication and authorization methods. Only very large or public deployments
 | 
						|
are expected to extend the Registry in this way.
 | 
						|
 | 
						|
Finally, the Registry ships with a robust [notification system](notifications.md),
 | 
						|
calling webhooks in response to activity, and both extensive logging and reporting,
 | 
						|
mostly useful for large installations that want to collect metrics.
 | 
						|
 | 
						|
## Understanding image naming
 | 
						|
 | 
						|
Image names as used in typical docker commands reflect their origin:
 | 
						|
 | 
						|
 * `docker pull ubuntu` instructs docker to pull an image named `ubuntu` from the official Docker Hub. This is simply a shortcut for the longer `docker pull docker.io/library/ubuntu` command
 | 
						|
 * `docker pull myregistrydomain:port/foo/bar` instructs docker to contact the registry located at `myregistrydomain:port` to find the image `foo/bar`
 | 
						|
 | 
						|
You can find out more about the various Docker commands dealing with images in
 | 
						|
the [official Docker engine documentation](../engine/reference/commandline/cli.md).
 | 
						|
 | 
						|
## Use cases
 | 
						|
 | 
						|
Running your own Registry is a great solution to integrate with and complement
 | 
						|
your CI/CD system. In a typical workflow, a commit to your source revision
 | 
						|
control system would trigger a build on your CI system, which would then push a
 | 
						|
new image to your Registry if the build is successful. A notification from the
 | 
						|
Registry would then trigger a deployment on a staging environment, or notify
 | 
						|
other systems that a new image is available.
 | 
						|
 | 
						|
It's also an essential component if you want to quickly deploy a new image over
 | 
						|
a large cluster of machines.
 | 
						|
 | 
						|
Finally, it's the best way to distribute images inside an isolated network.
 | 
						|
 | 
						|
## Requirements
 | 
						|
 | 
						|
You absolutely need to be familiar with Docker, specifically with regard to
 | 
						|
pushing and pulling images. You must understand the difference between the
 | 
						|
daemon and the cli, and at least grasp basic concepts about networking.
 | 
						|
 | 
						|
Also, while just starting a registry is fairly easy, operating it in a
 | 
						|
production environment requires operational skills, just like any other service.
 | 
						|
You are expected to be familiar with systems availability and scalability,
 | 
						|
logging and log processing, systems monitoring, and security 101. Strong
 | 
						|
understanding of http and overall network communications, plus familiarity with
 | 
						|
golang are certainly useful as well for advanced operations or hacking.
 | 
						|
 | 
						|
## Next
 | 
						|
 | 
						|
Dive into [deploying your registry](deploying.md)
 |