# Private Docker Registry • Obsidian Garden

# Private Docker Registry

Suitable to work with Drone-ci for hosting private #docker images.

## Sample docker-compose for custom docker registry

This one brings up private docker registry with ui. First you'll need to generate password for it:

    docker run \  --entrypoint htpasswd registry:2 \  -Bbn user mypassword > auth/registry.password

    version: "3"services:  registry:    container_name: docker__registry    image: registry:2    ports:    - 5000:5000    restart: always    environment:      - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data      - REGISTRY_AUTH=htpasswd      - REGISTRY_AUTH_HTPASSWD_REALM=Registry      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password      - REGISTRY_HTTP_SECRET=password      - REGISTRY_STORAGE_DELETE_ENABLED=true    volumes:      - ./registry/auth:/auth      - ./registry/data:/data  ui:    container_name: docker__ui    image: parabuzzle/craneoperator:latest    ports:    - 80:80    restart: always    environment:      - REGISTRY_HOST=registry      - REGISTRY_PORT=5000      - REGISTRY_PROTOCOL=http      - ALLOW_REGISTRY_LOGIN=true      - REGISTRY_ALLOW_DELETE=true      - USERNAME=registry      - PASSWORD=password

## Squash layers on registry

Sometimes you need to squash all layers in docker registry to free up disk space.

1. Run this command to mark oldest layers

    # Try this firstdocker run \  --rm anoxis/registry-cli \  -r https://registry.url \  -l user:password \  --delete \  --num 2# Then this docker run -it \    -v /path/to/registry/data:/registry \    -e REGISTRY_URL=https://registry.url \    -e DRY_RUN="false" \    -e REGISTRY_AUTH="user:password" \    mortensrasmussen/docker-registry-manifest-cleanup