🟢 Beginner

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 :latest v 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í.