Building Web Frontend/UI for Local Docker Registry using Portus

Portus is an authorization server and a user interface for the next generation of the Docker registry. Portus targets version 2 of the Docker Registry API. The minimum required version of Registry is 2.1, which is the first version supporting soft deletes of blobs.

If you are looking out for Web UI for your private Docker Registry, I would recommend to test-drive a tool called “Portus” powered by SUSE Team. Portus provides a useful and powerful UI on top of your registry. It is an open source authorization service and a user interface for the next generation of the Docker registry. Portus targets version 2 of the Docker Registry API.

Tested Infrastructure

Platform Number of Instance Reading Time
Ubuntu 18.04 1 5 min

Pre-requisite

curl -sSL https://get.docker.com/ | sh

Installing Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Create Docker Registry

docker run -d \
  -p 2000:2000 \
  --restart=always \
  --name registry \
  -v /mnt/registry:/var/lib/registry \
  registry:2

Cloning the Repository

git clone https://github.com/SUSE/Portus

Change directory into the cloned folder

cd Portus

Bring up Portus Application

docker-compose up -d

Verifying the Portus services

 docker-compose ps
       Name                     Command             State              Ports
---------------------------------------------------------------------------------------
portus_background_1   bundle exec rails runner /    Up      3000/tcp
                      ...
portus_clair_1        /clair -config /clair.yml     Up      0.0.0.0:6060->6060/tcp,
                                                            0.0.0.0:6061->6061/tcp
portus_db_1           /docker-entrypoint.sh mysq    Up      3306/tcp
                      ...
portus_portus_1       bundle exec rails runner /    Up      0.0.0.0:3000->3000/tcp
                      ...
portus_postgres_1     docker-entrypoint.sh          Up      5432/tcp
                      postgres
portus_registry_1     /entrypoint.sh /etc/docker    Up      0.0.0.0:5000->5000/tcp,
                      ...                                   0.0.0.0:5001->5001/tcp
portus_webpack_1      bash /srv/Portus/examples/    Up
                  ...

My image

My image

Provide Docker Registry Details

Once you login to Portus, you will need to provide Docker Registry details:

- Name
- <Your Host IP or Hostname>: 2000

Please remember that Portus is designed to handle only a single private Registry.

My image

Creating Users & Team

Say, you have 4-5 teams inside your organization namely,

First, create user who would be point of contact for each of these teams who will be pushing their Docker Image. Then, create team names accordingly.

Contributor

Next » Managing volumes through Docker CLI