Docker Registry UI


This project aims to provide a user interface for your private docker registry v2. There is no default registry on this UI, you should add your own with the UI. You can manage more than one registry server. All registries will be stored in the local storage of your browser.

This web user interface uses Riot the react-like user interface micro-library and riot-mui components.

GitHub Page and Live Demo



Getting Started


First you need node and npm in order to download dependencies.

git clone
cd docker-registry-ui
npm install

Now you can open index.html with your browser or use a http-server

npm install -g http-server


The docker contains the source code and a node webserver in order to serve the docker-registry-ui.

Get the docker image

You can get the image in three ways

From sources with this command:

git clone
# Alpine
docker build -t joxit/docker-registry-ui:latest docker-registry-ui
docker build -t joxit/docker-registry-ui:static -f docker-registry-ui/static.dockerfile docker-registry-ui
# Debian
docker build -t joxit/docker-registry-ui:debian -f docker-registry-ui/debian.dockerfile docker-registry-ui
docker build -t joxit/docker-registry-ui:static -f docker-registry-ui/debian-static.dockerfile docker-registry-ui

Or build with the url:

# Alpine
docker build -t joxit/docker-registry-ui:latest
docker build -t joxit/docker-registry-ui:static -f static.dockerfile
# Debian
docker build -t joxit/docker-registry-ui:debian -f debian.dockerfile
docker build -t joxit/docker-registry-ui:debian-static -f debian-static.dockerfile

Or pull the image from docker hub:

# Alpine
docker pull joxit/docker-registry-ui:latest
docker pull joxit/docker-registry-ui:static
# Debian
docker pull joxit/docker-registry-ui:debian
docker pull joxit/docker-registry-ui:debian-static

Run the docker

To run the docker and see the website on your 80 port, try this:

docker run -d -p 80:80 joxit/docker-registry-ui

Run the static docker

Some env options are available for use this interface for only one server.

Example with URL option.

docker run -d -p 80:80 -e URL= -e DELETE_IMAGES=true joxit/docker-registry-ui:static

Example with REGISTRY_URL, this will add a proxy to your registry. Your registry will be accessible here :, this will avoid CORS errors (see #25). Be careful, joxit/docker-registry-ui and registry:2 will communicate, both containers should be in the same network or use your private IP.

docker network create registry-ui-net
docker run -d --net registry-ui-net --name registry-srv registry:2
docker run -d --net registry-ui-net -p 80:80 -e REGISTRY_URL=http://registry-srv:5000 -e DELETE_IMAGES=true -e REGISTRY_TITLE="My registry" joxit/docker-registry-ui:static

There are some examples with docker-compose and docker-registry-ui as proxy here or docker-registry-ui as standalone here.

Using CORS

Your server should be configured to accept CORS.

If your docker registry does not need credentials, you will need to send this HEADER:

Access-Control-Allow-Origin: ['*']

If your docker registry need credentials, you will need to send these HEADERS:

    Access-Control-Allow-Origin: ['<your docker-registry-ui url>']
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS'] # Optional

Using delete

For deleting images, you need to activate the delete feature in your registry:

      enabled: true

And you need to add these HEADERS:

    Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
    Access-Control-Expose-Headers: ['Docker-Content-Digest']

Registry example

Example of docker registry configuration file:

version: 0.1
    service: registry
    enabled: true
    blobdescriptor: inmemory
    rootdirectory: /var/lib/registry
  addr: :5000
    X-Content-Type-Options: [nosniff]
    Access-Control-Allow-Origin: ['']
    Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE']
    Access-Control-Allow-Headers: ['Authorization']
    Access-Control-Max-Age: [1728000]
    Access-Control-Allow-Credentials: [true]
    Access-Control-Expose-Headers: ['Docker-Content-Digest']
    realm: basic-realm
    path: /etc/docker/registry/htpasswd