Points clés
- ✓Tableau de correspondance Docker vs kubectl pour 7 actions clés (lister, logs, exec, etc.)
- ✓Multi-stage builds reduisent la taille des images de 800MB a 15-30MB avec Alpine
TL;DR : Cet aide-mémoire regroupe les commandes Docker et Kubernetes indispensables pour gérer conteneurs, pods, services et déploiements. Gardez-le sous la main lors de vos sessions de formation kubernetes docker ou en production. Chaque commande inclut la syntaxe exacte et un exemple concret.
Cette compétence est au cœur de la formation Kubernetes, les fondamentaux.
Référence rapide : Docker vs kubectl
| Action | Docker | kubectl |
|---|---|---|
| Lister les conteneurs/pods | docker ps -a | kubectl get pods -A |
| Voir les logs | docker logs | kubectl logs |
| Shell interactif | docker exec -it | kubectl exec -it |
| Supprimer | docker rm | kubectl delete pod |
| Inspecter | docker inspect | kubectl describe pod |
| Construire une image | docker build -t app:v1 . | N/A (buildah, kaniko) |
| Pousser vers registry | docker push app:v1 | N/A |
À retenir : 82% des utilisateurs de conteneurs exécutent Kubernetes en production (CNCF Annual Survey 2025).
Commandes Docker essentielles
Gestion des images
# Construire une image avec tag
docker build -t monapp:v1.0 .
# Construire avec fichier spécifique
docker build -f Dockerfile.prod -t monapp:prod .
# Lister les images locales
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
# Supprimer les images non utilisées
docker image prune -a --force
# Taguer pour un registry
docker tag monapp:v1 registry.example.com/monapp:v1
Optimisation des images
Les images Alpine font environ 3MB contre 70MB pour Ubuntu de base (Medium Docker Optimization).
# Multi-stage build : passer de 800MB à 15-30MB
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:20-alpine
COPY --from=builder /app/node_modules ./node_modules
COPY . .
CMD ["node", "server.js"]
| Base image | Taille | Cas d'usage |
|---|---|---|
alpine | ~3MB | Production, microservices |
ubuntu | ~70MB | Développement, debugging |
scratch | 0MB | Binaires Go/Rust compilés |
distroless | ~20MB | Sécurité maximale |
Pour approfondir les différences fondamentales, consultez Kubernetes vs Docker : comprendre les différences essentielles.
Gestion des conteneurs
# Lancer un conteneur avec variables d'environnement
docker run -d --name api -e DB_HOST=postgres -p 8080:80 monapp:v1
# Voir les conteneurs avec stats
docker stats --no-stream
# Copier des fichiers
docker cp api:/app/logs ./logs-backup
# Arrêter tous les conteneurs
docker stop $(docker ps -q)
Commandes kubectl fondamentales
Contexte et configuration
# Voir le contexte actuel
kubectl config current-context
# Lister tous les contextes
kubectl config get-contexts
# Changer de contexte
kubectl config use-context production-cluster
# Définir le namespace par défaut
kubectl config set-context --current --namespace=app-prod
Gestion des pods
# Lister les pods avec IP et node
kubectl get pods -o wide
# Filtrer par label
kubectl get pods -l app=frontend,env=prod
# Voir le YAML d'un pod
kubectl get pod nginx-7fb9 -o yaml
# Créer depuis un fichier
kubectl apply -f deployment.yaml
# Supprimer avec grâce (30s par défaut)
kubectl delete pod nginx-7fb9 --grace-period=10
À retenir : 96% des organisations utilisent ou évaluent Kubernetes (The Decipherist). Maîtriser kubectl est devenu incontournable.
Pour débuter pas à pas, suivez le guide Premiers pas avec Docker et Kubernetes : démarrage rapide.
Debugging et troubleshooting
Diagnostic rapide
# Pod en CrashLoopBackOff ?
kubectl describe pod <name> | grep -A10 "State:"
kubectl logs <name> --previous
# Voir les events récents
kubectl get events --sort-by='.lastTimestamp' | tail -20
# Events d'un namespace spécifique
kubectl get events -n app-prod --field-selector type=Warning
Logs avancés
# Logs multi-conteneurs
kubectl logs <pod> -c <container> -f
# Logs depuis un timestamp
kubectl logs <pod> --since=1h
# Logs de tous les pods d'un déploiement
kubectl logs -l app=api --all-containers=true
# Exporter les logs
kubectl logs <pod> --timestamps > debug.log
Connexion aux pods
# Shell interactif
kubectl exec -it <pod> -- /bin/sh
# Commande unique
kubectl exec <pod> -- cat /etc/config/app.yaml
# Port-forward pour debug local
kubectl port-forward pod/<name> 8080:80
# Port-forward service
kubectl port-forward svc/api 8080:80
Pour résoudre les erreurs courantes, consultez Dépannage Docker et Kubernetes : résoudre les erreurs fréquentes.
Networking et services
Services
# Exposer un déploiement
kubectl expose deployment api --port=80 --target-port=8080
# Lister les services avec endpoints
kubectl get svc,ep -o wide
# Créer un service NodePort
kubectl expose deployment api --type=NodePort --port=80
# Test DNS interne
kubectl run test --rm -it --image=busybox -- nslookup api.default.svc.cluster.local
Debugging réseau
# Vérifier la connectivité entre pods
kubectl run test --rm -it --image=nicolaka/netshoot -- curl http://api:80/health
# Voir les network policies
kubectl get networkpolicies -A
# Décrire un ingress
kubectl describe ingress api-ingress
| Type de Service | Accès | Port externe |
|---|---|---|
| ClusterIP | Interne cluster | Non |
| NodePort | Node IP:30000-32767 | Oui |
| LoadBalancer | IP publique cloud | Oui |
| ExternalName | DNS externe | Non |
La Carte thématique Formation Kubernetes présente l'ensemble des compétences réseau à acquérir.
Gestion des ressources
Déploiements
# Voir l'historique des rollouts
kubectl rollout history deployment/api
# Revenir à la version précédente
kubectl rollout undo deployment/api
# Revenir à une révision spécifique
kubectl rollout undo deployment/api --to-revision=2
# Mettre à jour l'image
kubectl set image deployment/api api=monapp:v2
# Scaler manuellement
kubectl scale deployment api --replicas=5
ConfigMaps et Secrets
# Créer un ConfigMap depuis fichier
kubectl create configmap app-config --from-file=config.yaml
# Créer un Secret
kubectl create secret generic db-creds \
--from-literal=username=admin \
--from-literal=password=secret123
# Voir un secret décodé
kubectl get secret db-creds -o jsonpath='{.data.password}' | base64 -d
Ressources et quotas
# Voir l'utilisation des ressources
kubectl top pods
kubectl top nodes
# Décrire les limites d'un namespace
kubectl describe resourcequota -n app-prod
# Voir les LimitRanges
kubectl get limitrange -n app-prod -o yaml
Pour une comparaison complète des orchestrateurs, lisez le Comparatif Kubernetes vs Docker Swarm, ECS et Nomad.
Erreurs courantes et solutions
| Erreur | Cause probable | Commande diagnostic |
|---|---|---|
ImagePullBackOff | Image introuvable ou auth manquante | kubectl describe pod |
CrashLoopBackOff | App plante au démarrage | kubectl logs |
Pending | Ressources insuffisantes | kubectl describe pod |
OOMKilled | Mémoire dépassée | kubectl top pod |
CreateContainerConfigError | ConfigMap/Secret manquant | kubectl get cm,secret |
# Diagnostic complet d'un pod
kubectl get pod <name> -o yaml | grep -A20 "status:"
# Vérifier les ressources disponibles
kubectl describe nodes | grep -A5 "Allocated resources"
# Forcer la suppression d'un pod bloqué
kubectl delete pod <name> --force --grace-period=0
À retenir : Comme le souligne TealHQ, « Don't let your knowledge remain theoretical - set up a real Kubernetes environment to solidify your skills. »
Pour migrer vos workloads existants, suivez le guide Migrer vers Kubernetes depuis Docker Compose, VMs ou monolithes.
Alias recommandés
Ajoutez ces alias à votre .bashrc ou .zshrc :
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
alias kgd='kubectl get deployments'
alias kd='kubectl describe'
alias kl='kubectl logs -f'
alias ke='kubectl exec -it'
alias kaf='kubectl apply -f'
alias kdel='kubectl delete'
# Raccourci pour changer de namespace
alias kns='kubectl config set-context --current --namespace'
Pour approfondir ces compétences en tant qu'administrateur système Kubernetes, la pratique régulière reste essentielle.
Passez à l'action
Cet aide-mémoire couvre les commandes quotidiennes, mais la maîtrise de Kubernetes en production nécessite une formation structurée. Explorez le Guide Complet Formation Kubernetes pour identifier votre parcours.
Formations SFEIR Institute recommandées :
- Kubernetes, les fondamentaux : découverte en 1 jour pour démarrer rapidement
- LFS458 Administration Kubernetes : 4 jours de préparation CKA pour les administrateurs
- LFD459 Kubernetes pour les développeurs : 3 jours de préparation CKAD pour les développeurs
Contactez nos conseillers pour identifier la formation adaptée à votre niveau.