Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change the default docker registry from docker.io to my private registry?

By default, if I issue command:

sudo docker pull ruby:2.2.1 

it will pull from the docker.io offical site by default.

Pulling repository docker.io/library/ruby 

How do I change it to my private registry. That means if I issue

sudo docker pull ruby:2.2.1 

it will pull from my own private registry, the output is something like:

Pulling repository my_private.registry:port/library/ruby 
like image 748
mainframer Avatar asked Oct 10 '15 13:10

mainframer


People also ask

What is the default registry for docker?

Docker Hub is Docker's official cloud-based registry for Docker images. As you might expect, since Docker Hub is Docker's official registry, it is the default registry when you install Docker.

What is private registry in docker?

A private Docker registry allows you to share your custom base images within your organization, keeping a consistent, private, and centralized source of truth for the building blocks of your architecture.


2 Answers

UPDATE: Following your comment, it is not currently possible to change the default registry, see this issue for more info.

You should be able to do this, substituting the host and port to your own:

docker pull localhost:5000/registry-demo 

If the server is remote/has auth you may need to log into the server with:

docker login https://<YOUR-DOMAIN>:8080 

Then running:

docker pull <YOUR-DOMAIN>:8080/test-image 
like image 95
Guy Avatar answered Sep 21 '22 17:09

Guy


There is the use case of a mirror of Docker Hub (such as Artifactory or a custom one), which I haven't seen mentioned here. This is one of the most valid cases where changing the default registry is needed.

Luckily, Docker (at least version 19.03.3) allows you to set a mirror (tested in Docker CE). I don't know if this will work with additional images pushed to that mirror that aren't on Docker Hub, but I do know it will use the mirror instead. Docker documentation: https://docs.docker.com/registry/recipes/mirror/#configure-the-docker-daemon.

Essentially, you need to add "registry-mirrors": [] to the /etc/docker/daemon.json configuration file. So if you have a mirror hosted at https://my-docker-repo.my.company.com, your /etc/docker/daemon.json should contain:

{   "registry-mirrors": ["https://my-docker-repo-mirror.my.company.com"] } 

Afterwards, restart the Docker daemon. Now if you do a docker pull postgres:12, Docker should fetch the image from the mirror instead of directly from Docker Hub. This is much better than prepending all images with my-docker-repo.my.company.com

like image 28
Gakio Avatar answered Sep 24 '22 17:09

Gakio