Vlastný image registry
Kedy potrebuješ vlastný registry, ako ho nastaviť s heslom a certifikátom, koľko zaberá disku a ako ho nepremeniť na skládku starých imageov.
Aktualizované 23. augusta 2026
Register je úložisko obrázkov. Vlastný potrebuješ v troch prípadoch: obrázky sú súkromné a nesmú opustiť tvoju infraštruktúru, buildy prebiehajú často a limity externého sťahovania prekážajú, alebo nasadzuješ tú istú vec na viacero strojov.
Jednoduchá možnosť: registry:2
services:
registry:
image: registry:2
restart: unless-stopped
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
REGISTRY_STORAGE_DELETE_ENABLED: "true"
volumes:
- ./data:/var/lib/registry
- ./auth:/auth:ro
ports:
- "127.0.0.1:5000:5000"
Heslo vytvoríš takto:
mkdir -p auth
docker run --rm --entrypoint htpasswd httpd:2 -Bbn deploy 'long-password' > auth/htpasswd
docker compose up -d
Port nevystavuj navonok: pred register patrí webový server s certifikátom. Docker odmieta spolupracovať s cudzím registrom cez HTTP — a právom, veď cez neho sa na tvoje stroje dostáva spustiteľný kód.
Práca s ním
docker login registry.example.com
docker tag myapp:1.5.0 registry.example.com/myapp:1.5.0
docker push registry.example.com/myapp:1.5.0
docker pull registry.example.com/myapp:1.5.0
curl -u deploy https://registry.example.com/v2/_catalog
curl -u deploy https://registry.example.com/v2/myapp/tags/list
Po docker login sú prihlasovacie údaje v ~/.docker/config.json v čistom texte (base64 nie je šifrovanie). Na build strojoch vytvor samostatný účet s právami len na čítanie.
Register bez limitu veľkosti a bez čistenia je najrýchlejšia cesta k zaplnenému disku. Každý build pridáva vrstvy a zmazanie tagu neuvoľní miesto: potrebuješ garbage collection. Na VDS-1 so 40 GB zaplní register aktívneho projektu disk za pár týždňov.
Čistenie
Zmazanie tagu a následný garbage collection:
docker compose exec registry registry garbage-collect \
--delete-untagged /etc/docker/registry/config.yml
Počas garbage collection musíš register zastaviť — inak súbežný push môže stratiť vrstvy:
docker compose stop registry
docker compose run --rm registry registry garbage-collect --delete-untagged /etc/docker/registry/config.yml
docker compose start registry
Nastav si to ako plánovanú úlohu raz za týždeň a sleduj miesto na disku.
Alternatíva: register pribalený ku Git serveru
Ak už máš nastavený Forgejo alebo Gitea, majú vstavané úložisko balíkov vrátane Docker obrázkov. Samostatnú službu nepotrebuješ: prístup ide cez tie isté účty a obrázky vidíš vedľa kódu. Pre malé projekty je to pohodlnejšie než samostatný registry:2.
Časté chyby
- Register je otvorený bez autorizácie. Niekto cez neho môže podstrčiť obrázok, ktorý sa nasadí na tvojom vlastnom produkčnom stroji.
- Tag
latestnamiesto verzií. Register prestáva byť zdrojom reprodukovateľnosti: nie je jasné, čo presne je nasadené. Pozri aktualizácie kontajnerov. - Úložisko na tom istom disku ako databáza. Nárazový prírastok pushov zožerie priepustnosť disku a spomalí produkčnú službu — pozri rýchlosť disku.
- Adresár
./datanie je v zálohách. Stratíš všetky obrázky, ku ktorým nemáš poruke zdroje. Pozri čo zálohovať.