1. Docker Hub & Registres
Un registre Docker (registry) est un service de stockage et distribution d'images. Docker Hub est le registre public par défaut — il héberge des millions d'images officielles et communautaires.
# Images officielles (Docker Inc.)
docker pull nginx # = docker.io/library/nginx:latest
docker pull node:18-alpine # = docker.io/library/node:18-alpine
# Images verified publishers
docker pull bitnami/postgresql:15
# Images utilisateur
docker pull monuser/monapp:v1.0
# Registre alternatif (GitHub Container Registry)
docker pull ghcr.io/owner/repo:tag
2. Push & Pull
# 1. Se connecter à Docker Hub
docker login # Demande user/password
docker login -u monuser # Avec username
# 2. Tagger l'image avec le chemin complet
docker tag monapp:latest monuser/monapp:latest
docker tag monapp:latest monuser/monapp:1.0.0
# 3. Pousser vers Docker Hub
docker push monuser/monapp:latest
docker push monuser/monapp:1.0.0
# 4. Tirer l'image depuis Docker Hub
docker pull monuser/monapp:1.0.0
# Se déconnecter
docker logout
4. Registre privé
# Lancer un registre local (pour tests)
docker run -d \
-p 5000:5000 \
--name registry \
--restart always \
-v registry-data:/var/lib/registry \
registry:2
# Pousser vers le registre local
docker tag monapp:latest localhost:5000/monapp:latest
docker push localhost:5000/monapp:latest
# Lister les images dans le registre local
curl http://localhost:5000/v2/_catalog
# Tirer depuis le registre local
docker pull localhost:5000/monapp:latest
5. Multi-architecture avec buildx
# Créer un builder multi-arch
docker buildx create --name multiarch --use
# Builder pour linux/amd64 et linux/arm64 (Apple Silicon)
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t monuser/monapp:latest \
--push \
.
# Inspecter les architectures supportées
docker buildx imagetools inspect monuser/monapp:latest
6. GHCR & Alternatives
# GitHub Container Registry (ghcr.io)
docker login ghcr.io -u USERNAME -p $GITHUB_TOKEN
docker tag monapp ghcr.io/myorg/monapp:latest
docker push ghcr.io/myorg/monapp:latest
# Amazon ECR
aws ecr get-login-password | docker login \
--username AWS --password-stdin 123456789.dkr.ecr.eu-west-1.amazonaws.com
docker push 123456789.dkr.ecr.eu-west-1.amazonaws.com/monapp:latest
# Google Artifact Registry
gcloud auth configure-docker europe-docker.pkg.dev
docker push europe-docker.pkg.dev/project/repo/monapp:latest