OFFICIAL REPOUpdated 2 weeks, 5 days ago


Try on Desktop

Kitematic - GUI for Docker

Kitematic is not installed or is out-of-date. Click Download to install or update.

DownloadLearn More
Containerized docker registry

Supported tags and respective Dockerfile links

For more information about this image and its history, please see the relevant manifest file (library/registry) in the docker-library/official-images GitHub repo.

Docker Registry

The tags >= 2 refer to the new registry.

Older tags refer to the deprecated registry.

Run the Registry

Run the registry docker container: Quick version

  • run the registry: docker run -p 5000:5000 -v <HOST_DIR>:/tmp/registry-dev registry
  • Modify your docker startup line/script: add “-H tcp:// -H unix:///var/run/docker.sock –insecure-registry <REGISTRY_HOSTNAME>:5000”

Recommended: run the registry docker container

docker run \
         -e SETTINGS_FLAVOR=s3 \
         -e AWS_BUCKET=acme-docker \
         -e STORAGE_PATH=/registry \
         -e AWS_KEY=AKIAHSHB43HS3J92MXZ \
         -e AWS_SECRET=xdDowwlK7TJajV1Y7EoOZrmuPEJlHYcNP2k4j49T \
         -e SEARCH_BACKEND=sqlalchemy \
         -p 5000:5000 \

NOTE: The container will try to allocate the port 5000. If the port is already taken, find out which container is already using it by running docker ps.

Supported Docker versions

This image is officially supported on Docker version 1.7.0.

Support for older versions (down to 1.0) is provided on a best-effort basis.

User Feedback


Documentation for this image is stored in the registry/ directory of the docker-library/docs GitHub repo. Be sure to familiarize yourself with the repository's file before attempting a pull request.


If you have any problems with or questions about this image, please contact us through a GitHub issue.

You can also reach many of the official image maintainers via the #docker-library IRC channel on Freenode.


You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can.

Before you start to code, we recommend discussing your plans through a GitHub issue, especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing.


1 week, 6 days ago
profile picturestuartwarren

@axltxl depends on the version

4 weeks ago
profile pictureaxltxl

I'm just confused, is this the canon registry image I should use or is it the 'distribution' one?

1 month, 2 weeks ago
profile pictureeaoliver

For weeks I have been running a Docker registry:latest on a private server on AWS. I access it via an SSH tunnel listening on port 5000 and forwarding to localhost:5000 on the server running the Docker registry.

I'm still able to search the registry, and it returns the correct results.

curl -XGET localhost:5000/v1/search {“num_results”: 1, “query”: “”, “results”: [{“description”: null, “name”: “library/debian”}]}

However, I am unable to push or pull images from the registry. Any push or pull request returns:

FATA[0000] Error: v1 ping attempt failed with error: Get http://localhost:5000/v1/_ping: dial tcp connection refused

That's it… no additional info.

1 month, 3 weeks ago
profile pictureadnan15110

@programster I am having same issue. Does “Adding –insecure-registry” works for you. It doesn't work for me. I am badly need for the solution.

1 month, 3 weeks ago
profile pictureprogramster

How is one supposed to configure the registry with HTTPS? e.g. do I add a volume with the certificates?

Hoping this will resolve the docker push issue without adding –insecure-registry:

FATA[0010] Error response from daemon: v1 ping attempt failed with error: Get dial tcp i/o timeout. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add --insecure-registry to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/
2 months, 2 weeks ago
profile picturemazzolino

The instructions should be updated to reflect on the registry:2.0 tag now being available.

3 months ago
profile picturetrinitronx

For those asking how to search for images stored in the registry:

Try out the docker-registry-ui project

The other 2 ways are more manual:

  1. Use the docker registry API to search curl -s -v, get repositories and tags, or download image metadata, ancestry or layers.
  2. If you are using the S3 Storage Backend, just login to your AWS console and browse the bucket contents there. You can also use common tools such as AWS CLI or s3cmd.
6 months, 2 weeks ago
profile picturesalamandra

Same problem here. The easy way to fix it is reverting to 0.8.0 :/

7 months ago
profile picturepmoosh

Just a note on the preload GUNICORN_OPTS=[--preload] option. It doesn't look like you can use it when running on S3, as it causes other problems.

7 months ago
profile picturelorenwest

Thank you @blinkylights23, my co-workers are laughing at me because I'm the docker proponent within our company, and getting the latest registry running has been a multi-day project due to O/S incompatibilities, and silly configuration issues like GUNICORN_OPTS, which is exactly the thing that Docker is designed to prevent.

7 months, 2 weeks ago
profile pictureblinkylights23

Sounds like the weird 'OperationalError:…' issue is being caused by each of the gunicorn workers racing to create a database for sqlalchemy. I got this error too, but then managed to launch a container with:

docker -e GUNICORN_OPTS=[--preload] run -p 5000:5000 registry

Better explanation:

7 months, 2 weeks ago
profile picturemarcellodesales

@hjacobs, @kevinwangcy: Is the Database problem already fixed?

7 months, 2 weeks ago
profile picturehenningsprang

Didnd't analyze the exact cause, but a hint:

I also had the “OperationalError:…” message before, when running “docker run -p 5000:5000 registry” directly.

Wondering why it happend on one machine, but not on the other, I realized that it didn't occur when i did an explicit “docker pull registry” before.

That seems to prevent the error, even though pretty unclear how and why that can be.

7 months, 2 weeks ago
profile picturekevinwangcy

I also got this error, how can I fix it?

7 months, 2 weeks ago
profile picturehjacobs

Latest version fails (locally and on AWS), error is (as already reported by vgadang):

OperationalError: (OperationalError) table version already exists u'\nCREATE TABLE version (\n\tid INTEGER NOT NULL, \n\tPRIMARY KEY (id)\n)\n\n' ()
7 months, 3 weeks ago
profile picturevgadang

Any idea on how to fix this error?

2014-11-17 19:02:06 [13] [ERROR] Exception in worker process: Traceback (most recent call last): File “/usr/local/lib/python2.7/dist-packages/gunicorn/”, line 507, in spawn_worker worker.init_process() File “/usr/local/lib/python2.7/dist-packages/gunicorn/workers/”, line 193, in init_process super(GeventWorker, self).init_process() … … … File “/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/”, line 435, in do_execute cursor.execute(statement, parameters)

OperationalError: (OperationalError) table version already exists u'\nCREATE TABLE version (\n\tid INTEGER NOT NULL, \n\tPRIMARY KEY (id)\n)\n\n' ()

8 months ago
profile picturetompson

where is the 0.9.0 image? it was released yesterday

8 months ago
profile pictureimmanuel

How to view the list of images pushed inside the registry ????

10 months, 4 weeks ago
profile picturehbokh

@jjneely: Nope… can not be reproduced:

<code>core@localhost ~ $ sudo nsenter -t 3988 –mount –uts –ipc –net –pid /bin/bash groups: cannot find name for group ID 11 root@71f544be5723:/# </code>

11 months, 3 weeks ago
profile picturejjneely

Running the 0.7.3 image, there seems to be something strange with the libraries inside the running container that prevents nsenter from creating a bash process:

nsenter –target 21011 –mount –uts –ipc –net –pid /bin/bash

/bin/bash: error while loading shared libraries: /lib/x86_64-linux-gnu/ invalid ELF header

Can anyone reproduce?

1 year ago
profile picturejoffrey

You guys probably have noticed, but 0.7.1, 0.7.2 and 0.7.3 have been there for a week or so already =) Just wanted to clarify for people who just arrived!

@lemonbar, you'll want to look at enabling the indexing module and using the /v1/search endpoint. HTH!

1 year ago
profile picturelemonbar

How to search images in the own registry we started?

1 year ago
profile picturerojaro

Please update this image … you've skipped 0.7.1 already so please upload 0.7.2

1 year ago
profile picturetopicusonderwijs

Yes, please, 0.7.1 :D

1 year, 1 month ago
profile picturetclavier

It's possible to build last tag 0.7.1 ?