Container Registry: Docker Images verwalten | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

241 Dokumentationen verfügbar

Wissensdatenbank

Container Registry Docker Hub

Zuletzt aktualisiert: 20.01.2026 um 10:03 Uhr

Container Registry: Docker Images verwalten

Container Registries speichern und verteilen Docker Images. Lernen Sie die wichtigsten Registries und wie Sie sie nutzen.

Beliebte Registries

Registry URL Kostenlos
Docker Hub docker.io 1 privates Repo
GitHub (GHCR) ghcr.io Unbegrenzt privat
GitLab registry.gitlab.com Ja
AWS ECR *.ecr.*.amazonaws.com Free Tier
Google GCR gcr.io Free Tier

Docker Hub

# Login
docker login

# Image taggen
docker tag myapp:latest username/myapp:latest
docker tag myapp:latest username/myapp:1.0.0

# Push
docker push username/myapp:latest
docker push username/myapp:1.0.0

# Pull
docker pull username/myapp:latest

# Offizielle Images (kein Username)
docker pull nginx
docker pull postgres:15

GitHub Container Registry (GHCR)

# Personal Access Token erstellen:
# GitHub → Settings → Developer settings → Tokens
# Permissions: write:packages, read:packages

# Login
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin

# Image taggen
docker tag myapp:latest ghcr.io/username/myapp:latest

# Push
docker push ghcr.io/username/myapp:latest

# In GitHub Actions
- name: Login to GHCR
  uses: docker/login-action@v3
  with:
    registry: ghcr.io
    username: ${{ github.actor }}
    password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and Push
  uses: docker/build-push-action@v5
  with:
    push: true
    tags: ghcr.io/${{ github.repository }}:latest

AWS ECR

# ECR Repository erstellen
aws ecr create-repository --repository-name myapp

# Login (temporäre Credentials)
aws ecr get-login-password --region eu-central-1 | \
  docker login --username AWS --password-stdin \
  123456789.dkr.ecr.eu-central-1.amazonaws.com

# Tag und Push
docker tag myapp:latest 123456789.dkr.ecr.eu-central-1.amazonaws.com/myapp:latest
docker push 123456789.dkr.ecr.eu-central-1.amazonaws.com/myapp:latest

# Lifecycle Policy (alte Images löschen)
aws ecr put-lifecycle-policy \
  --repository-name myapp \
  --lifecycle-policy-text file://policy.json

GitLab Container Registry

# Login
docker login registry.gitlab.com

# oder mit Token
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY

# Push
docker tag myapp registry.gitlab.com/username/project/myapp:latest
docker push registry.gitlab.com/username/project/myapp:latest

# In .gitlab-ci.yml
build:
  stage: build
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

Private Registry (Self-Hosted)

# Einfache Registry starten
docker run -d -p 5000:5000 --name registry registry:2

# Mit Persistenz
docker run -d -p 5000:5000 \
  -v /data/registry:/var/lib/registry \
  --name registry registry:2

# Push zu lokaler Registry
docker tag myapp localhost:5000/myapp:latest
docker push localhost:5000/myapp:latest

# Mit Authentifizierung (htpasswd)
docker run -d -p 5000:5000 \
  -v /auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  registry:2

# htpasswd erstellen
htpasswd -Bc /auth/htpasswd username

Image Tags Best Practices

# ❌ Nur latest
myapp:latest

# ✅ Versionierung
myapp:1.0.0           # Semver
myapp:1.0             # Minor
myapp:1               # Major
myapp:latest          # Auch, aber zusätzlich

# ✅ Mit Git SHA
myapp:abc1234
myapp:1.0.0-abc1234

# ✅ Mit Build-Nummer
myapp:build-123

# Typisches Tagging in CI
IMAGE_NAME=ghcr.io/org/myapp
VERSION=1.0.0
SHA=$(git rev-parse --short HEAD)

docker tag myapp $IMAGE_NAME:$VERSION
docker tag myapp $IMAGE_NAME:$SHA
docker tag myapp $IMAGE_NAME:latest

Multi-Arch Images

# Für ARM und x86 bauen
docker buildx create --use

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t username/myapp:latest \
  --push .

# Manifest inspizieren
docker manifest inspect username/myapp:latest

Images aufräumen

# Lokal
docker image prune -a    # Alle ungenutzten
docker system prune -a   # Alles (Vorsicht!)

# Docker Hub: Manuell im UI oder API

# GHCR: Über GitHub UI oder API
gh api -X DELETE /user/packages/container/myapp/versions/123

# ECR: Lifecycle Policies
{
  "rules": [{
    "rulePriority": 1,
    "selection": {
      "tagStatus": "untagged",
      "countType": "sinceImagePushed",
      "countNumber": 7,
      "countUnit": "days"
    },
    "action": { "type": "expire" }
  }]
}
💡 Tipp: GHCR ist ideal für Open-Source-Projekte: Unbegrenzte private Repos und nahtlose GitHub Actions Integration.

Weitere Informationen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120