This document will describe the process to setup / run an private docker registry v2. This come handy when you need to have a private image repository. Why you might need this ? Imagine that you need a fast local registry or if you feel uncomfortable pushing you private work to docker hub.
If you search the docker documentation they recommend to use it as a container. That will work in most of the cases. In our case we wanted to have it running on a standalone server, to store the data on a shared storage and several other reasons (speed is one of the reasons).
What we need is epel repo installed and we need to install docker-distribution
at the time of writing this article the version available is 2.4.1:
Installing it is pretty forward:
To enable docker registry to run at boot
systemctl enable docker-distribution.service
and to start it:
systemctl start docker-distribution.service
Configuration is done via /etc/docker-distribution/registry/config.yml . We decided to start with a minimal configuration file and add additional setting later. Below is a configuration file that works :
Our shared storage is mounted in /data so keeping images in /data/docker-registry makes sense.
Remember that docker registry supports a lot of storage backend drivers (Local file system,Microsoft’s Azure Blob Storage,Google Cloud Storage, Amazon’s Simple Storage Service (S3) , Openstack Swift object storage, Aliyun OSS for object storage) but we will use local filesystem for now.
Docker has comprehensive documentation regarding parameters supported in config.yml, you can find it at Registry Configuration Reference and we recommend to check it in order to understand what are all the options you can configure.
1) Build a container and tag it to use the custom repository
docker build /tmp/grafana -t 192.168.1.1:5000/custom_grafana
2) Push the image to repository:
docker push 192.168.1.1:5000/custom_grafana
One thought on “Setup and run a standalone private docker registry v2”
Thanks a lot!