• Stars
    star
    1,642
  • Rank 28,375 (Top 0.6 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 10 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Browse and modify your Docker registry in a browser.

About

The docker-registry-frontend is a browser-based solution for browsing and modifying a private Docker registry.

devDependency Status Issue Count

Before opening a bug report...

...make sure you have consulted the example-setup/README.md.

PLEASE, READ THIS!

THIS VERSION OF THE DOCKER REGISTRY FRONTEND ONLY WORKS WITH THE DOCKER REGISTRY V2. THERE'S ALSO A LEGACY "V1-DEPRECATED" BRANCH WHICH WORKS WITH THE OLD 0.9.1 DOCKER REGISTRY. THE "V1-DEPRECATED" BRANCH IS VERY STABLE BUT WON'T RECEIVE SIGNIFICANT ATTENTION ANY LONGER BECAUSE THE OLD DOCKER REGISTRY WAS DECLARED DEPRECATED.

THE V2 SUPPORT FOR THE DOCKER REGISTRY FRONTEND IS STILL UNDER ACTIVE DEVELOPMENT. THERE'S A FAIR CHANCE THAT A MAJORITY OF FEATURES IS NOT YET IMPLEMENTED. CHECK THE ISSUES AND OPEN A BUG IF SOMETHING DOESN'T WORK RIGHT AWAY.

TO PULL A VERSION OF THIS BRANCH FROM THE DOCKER HUB, MAKE SURE YOU PULL AND RUN konradkleine/docker-registry-frontend:v2

Features

For a list of all the features, please see the Wiki. Note, that currently the Wiki pages still refer to version 1 of this frontend.

Development

To learn how to develop for the docker-registry-frontend, see here.

Usage

This application is available in the form of a Docker image that you can run as a container by executing this command:

sudo docker run \
  -d \
  -e ENV_DOCKER_REGISTRY_HOST=ENTER-YOUR-REGISTRY-HOST-HERE \
  -e ENV_DOCKER_REGISTRY_PORT=ENTER-PORT-TO-YOUR-REGISTRY-HOST-HERE \
  -p 8080:80 \
  konradkleine/docker-registry-frontend:v2

This command starts the container and forwards the container's private port 80 to your host's port 8080. Make sure you specify the correct url to your registry.

When the application runs you can open your browser and navigate to http://localhost:8080.

Docker registry using SSL encryption

If the Docker registry is only reachable via HTTPs (e.g. if it sits behind a proxy) , you can run the following command:

sudo docker run \
  -d \
  -e ENV_DOCKER_REGISTRY_HOST=ENTER-YOUR-REGISTRY-HOST-HERE \
  -e ENV_DOCKER_REGISTRY_PORT=ENTER-PORT-TO-YOUR-REGISTRY-HOST-HERE \
  -e ENV_DOCKER_REGISTRY_USE_SSL=1 \
  -p 8080:80 \
  konradkleine/docker-registry-frontend:v2

SSL encryption

If you want to run the application with SSL enabled, you can do the following:

sudo docker run \
  -d \
  -e ENV_DOCKER_REGISTRY_HOST=ENTER-YOUR-REGISTRY-HOST-HERE \
  -e ENV_DOCKER_REGISTRY_PORT=ENTER-PORT-TO-YOUR-REGISTRY-HOST-HERE \
  -e ENV_USE_SSL=yes \
  -v $PWD/server.crt:/etc/apache2/server.crt:ro \
  -v $PWD/server.key:/etc/apache2/server.key:ro \
  -p 443:443 \
  konradkleine/docker-registry-frontend:v2

Note that the application still serves the port 80 but it is simply not exposed ;). Enable it at your own will. When the application runs with SSL you can open your browser and navigate to https://localhost.

Use the application as the registry

If you are running the Docker registry on the same host as the application but only accessible to the application (eg. listening on 127.0.0.1) then you can use the application as the registry itself.

Normally this would then give bad advice on how to access a tag:

docker pull localhost:5000/yourname/imagename:latest

We can override what hostname and port to put here:

sudo docker run \
 -d \
 -e ENV_DOCKER_REGISTRY_HOST=localhost \
 -e ENV_DOCKER_REGISTRY_PORT=5000 \
 -e ENV_REGISTRY_PROXY_FQDN=ENTER-YOUR-APPLICATION-HOST-HERE \
 -e ENV_REGISTRY_PROXY_PORT=ENTER-PORT-TO-YOUR-APPLICATION-HOST-HERE \
 -e ENV_USE_SSL=yes \
 -v $PWD/server.crt:/etc/apache2/server.crt:ro \
 -v $PWD/server.key:/etc/apache2/server.key:ro \
 -p 443:443 \
 konradkleine/docker-registry-frontend:v2

A value of 80 or 443 for ENV_REGISTRY_PROXY_PORT will not actually be shown as Docker will check 443 and then 80 by default.

Kerberos authentication

If you want to use Kerberos to protect access to the registry frontend, you can do the following:

sudo docker run \
  -d \
  -e ENV_DOCKER_REGISTRY_HOST=ENTER-YOUR-REGISTRY-HOST-HERE \
  -e ENV_DOCKER_REGISTRY_PORT=ENTER-PORT-TO-YOUR-REGISTRY-HOST-HERE \
  -e ENV_AUTH_USE_KERBEROS=yes \
  -e ENV_AUTH_NAME="Kerberos login" \
  -e ENV_AUTH_KRB5_KEYTAB=/etc/apache2/krb5.keytab \
  -v $PWD/krb5.keytab:/etc/apache2/krb5.keytab:ro \
  -e ENV_AUTH_KRB_REALMS="ENTER.YOUR.REALMS.HERE" \
  -e ENV_AUTH_KRB_SERVICE_NAME=HTTP \
  -p 80:80 \
  konradkleine/docker-registry-frontend:v2

You can of course combine SSL and Kerberos.

Browse mode

If you want to start applicaton with browse mode which means no repos/tags management feature in the UI, You can specify ENV_MODE_BROWSE_ONLY flag as follows:

sudo docker run \
  -d \
  -e ENV_DOCKER_REGISTRY_HOST=ENTER-YOUR-REGISTRY-HOST-HERE \
  -e ENV_DOCKER_REGISTRY_PORT=ENTER-PORT-TO-YOUR-REGISTRY-HOST-HERE \
  -e ENV_MODE_BROWSE_ONLY=true \
  -p 8080:80 \
  konradkleine/docker-registry-frontend:v2

You can set true or false to this flag.

NOTE For now ENV_MODE_BROWSE_ONLY will be overwritten to true.

Default repositories per page

By default 20 repositories will be listed per page. To adjust this number, to let's say 50 pass -e ENV_DEFAULT_REPOSITORIES_PER_PAGE=50 to your docker run command.

Default tags per page

By default 10 tags will be listed per page. To adjust this number, to let's say 5 pass -e ENV_DEFAULT_TAGS_PER_PAGE=5 to your docker run command. Note that providing a big number will result in a heavy load on browsers.

Contributions are welcome!

If you like the application, I invite you to contribute and report bugs or feature request on the project's github page: https://github.com/kwk/docker-registry-frontend. To learn how to develop for the docker-registry-frontend, see here.

Thank you for your interest!

-- Konrad

More Repositories

1

docker-registry-setup

A demonstration of how you can secure your registry v2 (with LDAP authentication and ACLs)
Shell
195
star
2

distcc-docker-images

A repository of distcc-docker images tailored for various linux distributions
Dockerfile
18
star
3

docker-registry-event-collector

Aggregate docker registry events and store them in MongoDB for use by other frontend tools.
Go
12
star
4

llvm-daily-fedora-rpms

Everything to build LLVM snapshots for fedora
Python
12
star
5

docker-registry-htpasswd

This sets up a standalone docker registry v2 with TLS and htpasswd authentication
11
star
6

buildbot-app

Your GitHub App to make Buildbot a part of your Pull Request workflow.
Go
2
star
7

icecream-images

Makefile
2
star
8

golden

Go test utility for string- or JSON-based comparisons of arbitrary nested objects.
Go
2
star
9

glxtension

C++
1
star
10

docker-find-image-users

Find tags in a Docker Registry that reference a given image ID.
Shell
1
star
11

python-gerritevent

This library connects the code review tool Gerrit in a loose fashion to any number of issue trackers or messaging services. It does this by parsing the live output of Gerrit events and dispatching them into handlers.
Python
1
star
12

llvm-ci

Python
1
star
13

apply-patches-from-spec-file

Extract patch tag lines and %patch macros from an RPM spec file an apply them.
Go
1
star
14

asan-dlopen-issue

This project shows how to suppress a memory leak in a dynamic library loaded with dlopen.
C
1
star
15

focus_on_involved_nodes

Blender addon that unhides all nodes that lead up to the selected one and hides all others
Python
1
star
16

gocross

Golang cross package coverage
Makefile
1
star
17

pbrt-v2

Source code for the version of pbrt described in the second edition of "Physically Based Rendering"
C
1
star