Sopstveni registar slika
Kada ti treba sopstveni registar, kako da ga podesiš sa lozinkom i sertifikatom, koliko diska troši i kako da ga ne pretvoriš u deponiju starih slika.
Ažurirano 23. avgust 2026.
Registar je skladište slika. Sopstveni registar ti treba u tri slučaja: slike su privatne i ne smeju da napuste tvoju infrastrukturu, build-ovi se dešavaju često pa eksterni limiti za preuzimanje smetaju, ili isto postavljaš na više mašina.
Jednostavna opcija: 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"
Lozinku napravi ovako:
mkdir -p auth
docker run --rm --entrypoint htpasswd httpd:2 -Bbn deploy 'long-password' > auth/htpasswd
docker compose up -d
Ne izlaži port spolja: ispred registra ide veb server sa sertifikatom. Docker odbija da radi sa tuđim registrom preko HTTP-a — i s pravom, jer kroz njega na tvoje mašine stiže izvršni kod.
Rad sa registrom
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
Posle docker login, podaci za prijavu stoje u ~/.docker/config.json u čistom tekstu (base64 nije enkripcija). Na build mašinama napravi odvojen nalog sa pravom samo za čitanje.
Registar bez ograničenja veličine i bez čišćenja je najbrži način da se napuni disk. Svaki build dodaje slojeve, a brisanje taga ne oslobađa prostor: potrebno je sakupljanje smeća. Na VDS-1 sa 40 GB, registar aktivnog projekta će napuniti disk za par nedelja.
Čišćenje
Brisanje taga i potom sakupljanje smeća:
docker compose exec registry registry garbage-collect \
--delete-untagged /etc/docker/registry/config.yml
Moraš da zaustaviš registar dok sakupljanje smeća radi — inače paralelni push može da izgubi slojeve:
docker compose stop registry
docker compose run --rm registry registry garbage-collect --delete-untagged /etc/docker/registry/config.yml
docker compose start registry
Podesi ovo kao zakazani posao jednom nedeljno i prati prostor na disku.
Alternativa: registar uz Git server
Ako si već podesio Forgejo ili Gitea, oni imaju ugrađeno skladište paketa, uključujući Docker slike. Ne treba ti odvojena usluga: pristup ide preko istih naloga, a slike su vidljive pored koda. Za male projekte ovo je zgodnije od samostalnog registry:2.
Česte greške
- Registar je otvoren bez autorizacije. Kroz njega neko može da podmetne sliku koja će se postaviti na tvoju produkcijsku mašinu.
- Tag
latestumesto verzija. Registar prestaje da bude izvor reproduktivnosti: nije jasno šta je tačno postavljeno. Vidi ažuriranje kontejnera. - Skladištenje na istom disku kao baza podataka. Nagli skok push-eva pojede propusni opseg diska i uspori produkcijsku uslugu — vidi brzinu diska.
- Direktorijum
./datanije u tvojim backup-ima. Izgubićeš sve slike za koje nemaš izvorne fajlove pri ruci. Vidi šta backup-ovati.