Hosting your own Docker registry is great, it’s just that… It’s pretty anonymous. You don’t really get to see how many images you have, or their tags, or image digests etc. Unless you want to send manual GET requests via CURL, you can use joxit/docker-registry-ui.
Add the following to “ui service” to your existing registry docker-compose:
ui:
image: joxit/docker-registry-ui:latest
ports:
- "5001:5001"
environment:
- REGISTRY_TITLE=Private Docker Registry
- NGINX_PROXY_PASS_URL=http://registry:5000
- NGINX_LISTEN_PORT=5001
- SINGLE_REGISTRY=true
- DELETE_IMAGES=true # Optional, default: false
- SHOW_CONTENT_DIGEST=true # Optional, default: false
depends_on:
- registry
The end result docker-compose.yml should look like this:
version: '3'
services:
registry:
restart: always
image: registry:2
ports:
- "5000:5000"
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry
REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
volumes:
- ./auth:/auth
- ./data:/data
ui:
image: joxit/docker-registry-ui:latest
ports:
- "5001:5001"
environment:
- REGISTRY_TITLE=Private Docker Registry
- NGINX_PROXY_PASS_URL=http://registry:5000
- NGINX_LISTEN_PORT=5001
- SINGLE_REGISTRY=true
- DELETE_IMAGES=true # Optional, default: false
- SHOW_CONTENT_DIGEST=true # Optional, default: false
depends_on:
- registry
Append the following to your existing NGinX registry reverse proxy:
location /ui {
proxy_pass http://localhost:5001/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
location /docker-registry-ui.js {
return 301 /ui/docker-registry-ui.js;
}
location /docker-registry-ui.css {
return 301 /ui/docker-registry-ui.css;
}
Your Docker Registry UI should now be available at https://dockrreg.tld/ui!
Login with your usual Registry Credentials
Go Docker UI! ?