Registry is een applicatie waarmee je Docker images kunt leveren aan een Docker host. Dit kun je op verschillende manieren inzetten. Bijvoorbeeld voor ontwikkeling, privacy of een cache. Ik heb het ingezet als een cache zodat ik minder aanvragen hoef te doen aan Docker HUB
Dit programma heette eerst Registry maar de ontwikkeling is door Docker zelf stopgezet en het is nu een community project. Daarvoor is ook de naam gewijzigd en heet het nu Distribution. Echter wordt de applicatie nog steeds veel Registry genoemd.
services:
registry:
image: registry:3
container_name: registry
restart: always
ports:
- "5000:5000"
volumes:
# config bestand
- "./config.yml:/etc/distribution/config.yml"
# data opslag
- "./data:/var/lib/registry"
environment:
- UMASK=022 # bestand rechten beperken
- OTEL_TRACES_EXPORTER=none # Schakel telemetry meldingen uit
version: 0.1
#Opslag locatie
storage:
filesystem:
rootdirectory: /var/lib/registry
cache:
blobdescriptor: inmemory
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
proxy:
remoteurl: https://registry-1.docker.io
# Gedownloade images een maand lang bewaren
ttl: 720h
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
Er zijn verschillende manieren waarop je een image kunt ophalen.
docker pull <domeinnaam>:5000/library/nginx
services:
nginx:
image: <domeinnaam>:5000/library/nginx
De eerste 2 opties zijn voor een enkele container op te halen. Maar als je alle pulls wil doen via het Registry kun je Docker ook configureren dat de host altijd je Registry gebruikt. Het voordeel daarvan is dat je dat maar een keer hoeft in te stellen.
Om dat te doen pas het volgende bestand aan op je Docker host /etc/docker/daemon.json
"registry-mirrors": [
"http://<domeinnaam>:5000"
],
"insecure-registries": [
"<domeinnaam>:5000"
]
De images die ik download en gebruik worden nu opgeslagen in Registry maar ook nog steeds op de Docker hosts zelf. Dat is een beetje dubbel op. Ik heb hier nog niet naar gekeken maar misschien kan dit nog beter ingericht worden dan ik nu heb gedaan.