The simplest and most complete UI for your private docker registry v2 and v3
Find a file
2017-11-08 23:50:43 -04:00
bin Use nginx alpine in static dockerfile 2017-10-22 11:59:44 +02:00
demo Update version to 0.3.0: riot-mui (#17) 2017-10-19 09:56:47 +02:00
dist Update version to 0.3.1 Fix for #24 2017-11-08 23:50:43 -04:00
src Update version to 0.3.1 Fix for #24 2017-11-08 23:50:43 -04:00
.gitignore Add list of registry repositories with riot 2016-04-10 12:53:55 +02:00
_config.yml Add analytics 2017-05-04 21:20:33 +02:00
Dockerfile [gulp] Update Dockerfile for the new organization. Need static tag now 2016-07-23 22:51:47 +02:00
Dockerfile.static Use nginx alpine in static dockerfile 2017-10-22 11:59:44 +02:00
gulpfile.js Update version to 0.3.1 Fix for #24 2017-11-08 23:50:43 -04:00
LICENSE Initial commit 2016-04-09 21:40:26 +02:00
package.json Update version to 0.3.1 Fix for #24 2017-11-08 23:50:43 -04:00
README.md Update version to 0.3.0: riot-mui (#17) 2017-10-19 09:56:47 +02:00
screenshot.png [riot-mui] Update readme 2017-10-14 20:53:35 +02:00

Docker Registry UI

Overview

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

screenshot

Features

  • List all your repositories/images.
  • List all tags for a repository/image
  • Sort the tag list
  • One interface for many registries
  • Use a secured docker registry
  • Share your docker registry with query parameter url (e.g. https://joxit.github.io/docker-registry-ui/demo?url=https://registry.example.com)

Getting Started

Basic

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

git clone https://github.com/Joxit/docker-registry-ui.git
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
http-server

Docker

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 https://github.com/Joxit/docker-registry-ui.git
docker build -t joxit/docker-registry-ui docker-registry-ui
docker build -t joxit/docker-registry-ui -f docker-registry-ui/Dockerfile.static docker-registry-ui

Or build with the url:

docker build -t joxit/docker-registry-ui github.com/Joxit/docker-registry-ui
docker build -t joxit/docker-registry-ui -f Dockerfile.static github.com/Joxit/docker-registry-ui

Or pull the image from docker hub:

docker pull joxit/docker-registry-ui
docker pull joxit/docker-registry-ui: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.

  • URL: set the static URL to use. (Required)
  • DELETE_IMAGES: if this variable is empty or false, delete feature is desactivated. It is activated otherwise.
docker run -d -p 80:80 -e URL=http://127.0.0.1:5000 -e DELETE_IMAGES=true joxit/docker-registry-ui:static

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:

http:
  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:

storage:
    delete:
      enabled: true

And you need to add these HEADERS:

http:
  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
log:
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
    Access-Control-Allow-Origin: ['http://127.0.0.1:8001']
    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']
auth:
  htpasswd:
    realm: basic-realm
    path: /etc/docker/registry/htpasswd