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

330 Dokumentationen verfügbar

Wissensdatenbank

Container Registry Docker Hub

Zuletzt aktualisiert: 14.07.2026 um 12:30 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

Texterstellung mit KI-Unterstützung

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
LLMs können Fehler machen. Ihre Nachrichten werden an Google Gemini weitergeleitet.
120