Container Registry — Správa kontajnerových obrazov
Container registry je úložisko pre kontajnerové images. Funguje ako centrálne miesto, kde tímy ukladajú, verzujú a distribuujú Docker/OCI obrazy. Bez registra by zdieľanie images medzi vývojármi a prostrediami bolo nepraktické.
Čo je Container Registry?
Registry je v podstate HTTP API server, ktorý implementuje OCI Distribution Specification. Keď spustíte docker push alebo docker pull, komunikujete práve s registrom. Každý image sa skladá z vrstiev (layers) a manifestu, ktorý ich spája. Registry tieto vrstvy efektívne ukladá a deduplikuje.
Existujú dva základné typy:
- Verejné registry — Docker Hub, GitHub Container Registry (GHCR), Quay.io
- Privátne registry — Harbor, GitLab Container Registry, AWS ECR, Azure ACR
Ako funguje push a pull
# Prihlásenie do registra
docker login ghcr.io -u USERNAME
# Tagnutie image pre konkrétny registry
docker tag myapp:latest ghcr.io/mojorg/myapp:v1.2.0
# Push do registra
docker push ghcr.io/mojorg/myapp:v1.2.0
# Pull z registra
docker pull ghcr.io/mojorg/myapp:v1.2.0
Image tag má štruktúru: registry/namespace/repository:tag. Ak vynecháte registry, Docker predvolene použije Docker Hub.
Praktické použitie
Docker Hub je najväčší verejný registry s miliónmi images. Oficiálne images (nginx, postgres, node) sú overené a pravidelne aktualizované. Bezplatný tier umožňuje neobmedzené verejné repozitáre.
GitHub Container Registry (GHCR) sa výborne integruje s GitHub Actions. Images sa viažu na repozitáre a zdieľajú rovnaké permissions:
# GitHub Actions workflow
- name: Push to GHCR
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
docker push ghcr.io/${{ github.repository }}:${{ github.sha }}
Harbor je open-source enterprise registry od CNCF. Ponúka vulnerability scanning, replikáciu medzi registrami, RBAC, audit logy a podpísanie images cez Cosign/Notary. Ideálny pre organizácie s prísnymi bezpečnostnými požiadavkami.
Privátny registry si viete spustiť aj jednoducho:
docker run -d -p 5000:5000 --name registry registry:2
docker push localhost:5000/myapp:latest
Best Practices
- Nikdy nepoužívajte tag
:latestv produkcii — vždy špecifické verzie alebo SHA digest - Aktivujte vulnerability scanning na úrovni registra (Harbor, ECR, GHCR to podporujú natívne)
- Nastavte retention policies na automatické mazanie starých images
- Používajte image signing (Cosign) na overenie integrity obrazov
- Pre CI/CD pipeline konfigurujte pull-through cache, aby ste znížili závislosť na externých registroch
- Obmedzte prístup cez RBAC — vývojári push, produkcia len pull
Container registry je kritická súčasť každého CI/CD pipeline a správna voľba registra ovplyvňuje bezpečnosť, rýchlosť aj spoľahlivosť nasadení.