Public | Automated Build

Last pushed: 8 months ago
Short Description
Browse and modify your Docker registry in a browser.
Full Description

About

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



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.

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

Docker Pull Command
Owner
konradkleine
Source Repository

Comments (17)
jshapiro26
a year ago

@agarbato and @junneyang I ran into the same issue and started looking through the repo. Looks like browse mode only is currently forced because of some issue: https://github.com/kwk/docker-registry-frontend/commit/3379eb0f0e3b45c32dad00262ab9cb3821ea1df3#diff-422d096cb5179a6f27e57b7ac189d997 but i don't see any comments as to why. I pulled the repo down and changed this back locally then rebuilt the image and ran it. The delete option is now available but doesn't actually work. I don't see the create option anywhere.

clockworksoul
a year ago

Hi - excellent work you've done here. Quick question though: I know you're busy with real life, but I was wondering when you might be able to add the capability to delete images from the registry?

clockworksoul
a year ago

Hi,

Like firelyu and yorch, clicking on repos without a namespace redirect to the home page. I'd rather not have to change all of my builds to add namespaces to the names.

Is there any thought of perhaps adding a default namespace?

junneyang
a year ago

@agarbato

I stuck in the same problem.
Any help is greatly appreciated.

agarbato
a year ago

This project is still the best on the dockerhub. However since we migrated to registry2 as v1 will be soon retired I've never been able to use it with registry2.

Right now I'm able to browse my images (after I saw namespace issue and added it to my images) but I'm unable to delete any tag/version.

I tried to set ENV_MODE_BROWSE_ONLY=false since I'm not sure what's the default but still nothing.

I see images and tag but then on tag there's nothing I can click, is just not linked so no operation are possible.

I'm using S3 as backend.

Am I missing somethig or this feature is not yet supported with v2?

anenair
a year ago

I have a simple setup where registry:2.3 and frontend are running on the same instance. SSL termination is done at AWS ELB, and auth to registry is at nginx level. the container comes up fine. but docker logs <container> prints as below :

{}[ec2-user@docker-registry ~]$ docker logs ec2user_frontend_1
Module auth_kerb disabled.
To activate the new configuration, you need to run:
service apache2 restart
Module ssl already disabled
Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart
Stopping web server: apache2.
/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
Setting ulimit failed. See README.Debian for more information.
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.4. Set the 'ServerName' directive globally to suppress this message
[ec2-user@docker-registry ~]$

Is this an error or just a warning?

Curl at port 8080 on host machine gives :

[ec2-user@docker-registry ~]$ curl http://localhost:8080
<!doctype html> <html class="no-js" ng-app="docker-registry-frontend" ng-controller="MainController as main"> <head> <base href="/"> <meta charset="utf-8"> <title ng-bind-template="Docker registry {{main.$location.path()}}">Docker registry</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <!-- Place favicon.ico and apple-touch-icon.png in the root directory --> <link rel="stylesheet" href="styles/vendor.8f78f383.css"> <link rel="stylesheet" href="styles/main.b760445a.css"> <body> <!--[if lt IE 7]> <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> <![endif]--> <!-- Add your site or application content here --> <div class="container"> <div class="masthead"> <h3 class="text-muted">Docker Registry Frontend</h3> </div> <main ng-view></main> <footer> <p> <a href="https://github.com/kwk/docker-registry-frontend/issues/new"><span class="glyphicon glyphicon-fire"></span> <small>Report a bug</small></a> <a href="https://github.com/kwk/docker-registry-frontend/fork"><span class="glyphicon glyphicon-random"></span> <small> Fork me on GitHub</small></a> <a href="about"><span class="glyphicon glyphicon-question-sign"></span> <small>About</small></a> <a href="https://github.com/kwk/docker-registry-frontend/commit/{{appVersion.git.sha1}}"><span class="glyphicon glyphicon-barcode"></span> <small>This is git revision: <span ng-bind-template="{{appVersion.git.sha1 | limitTo: 7}}">-</span></small></a> </p> </footer> </div> <!--[if lt IE 9]> <script src="scripts/oldieshim.ed482371.js"></script> <![endif]--> <script src="scripts/vendor.00230f83.js"></script> <script src="scripts/scripts.c5d59356.js"></script>

Docker ps :

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af1d248a1829 nginx:1.9 "nginx -g 'daemon off" 9 minutes ago Up 9 minutes 80/tcp, 443/tcp, 0.0.0.0:8443->8443/tcp ec2user_nginx_1
680824fea3b3 konradkleine/docker-registry-frontend:v2 "/bin/sh -c $START_SC" 9 minutes ago Up 9 minutes 443/tcp, 0.0.0.0:8080->80/tcp ec2user_frontend_1
42f0ed663f0f registry:2.3 "/bin/registry /etc/d" 14 minutes ago Up 9 minutes 127.0.0.1:5000->5000/tcp ec2user_registry_1
66de2acfa5a6 redis "/entrypoint.sh redis" 14 minutes ago Up 9 minutes 0.0.0.0:6379->6379/tcp ec2user_redis_1
[ec2-user@docker-registry ~]$

Any help is greatly appreciated.

yorch
a year ago

Thanks to a response here https://github.com/kwk/docker-registry-frontend/issues/89, the issue is caused because my images were not in a namespace (they were global), so adding a namespace to them fixed the problem.

yorch
a year ago

Same thing happening to me, not sure what the problem could be.. No mentioned of an error in the docker logs so will have to dig into other logs in the container

firelyu
a year ago

I run the container with v2 tag, and connect to the registry v2. Good new is I can see all the repos in the registry. Bad news is I can't delete any repo. Once I click the repo in http://localhost:8080/repositories/20, it jump to the http://localhost:8080/home. I am confused.

ajeetraina
2 years ago

Though I tried this and it does work on commandline but didnt show up anything on browser

root@dell-virtual-machine:~# docker tag ubuntu 0.0.0.0:5000/myfirstimage
root@dell-virtual-machine:~# docker push 0.0.0.0:5000/myfirstimage
The push refers to a repository [0.0.0.0:5000/myfirstimage] (len: 1)
Sending image list
2015/09/16 01:50:45 -->