Aide-mémoire6 min de lecture

Aide-mémoire Docker et Kubernetes : commandes essentielles en un coup d'oeil

SFEIR Institute

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

ActionDockerkubectl
Lister les conteneurs/podsdocker ps -akubectl get pods -A
Voir les logsdocker logs -fkubectl logs -f
Shell interactifdocker exec -it shkubectl exec -it -- sh
Supprimerdocker rm kubectl delete pod
Inspecterdocker inspect kubectl describe pod
Construire une imagedocker build -t app:v1 .N/A (buildah, kaniko)
Pousser vers registrydocker push app:v1N/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 imageTailleCas d'usage
alpine~3MBProduction, microservices
ubuntu~70MBDéveloppement, debugging
scratch0MBBinaires Go/Rust compilés
distroless~20MBSé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 ServiceAccèsPort externe
ClusterIPInterne clusterNon
NodePortNode IP:30000-32767Oui
LoadBalancerIP publique cloudOui
ExternalNameDNS externeNon

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

ErreurCause probableCommande diagnostic
ImagePullBackOffImage introuvable ou auth manquantekubectl describe pod
CrashLoopBackOffApp plante au démarragekubectl logs --previous
PendingRessources insuffisanteskubectl describe pod
OOMKilledMémoire dépasséekubectl top pod
CreateContainerConfigErrorConfigMap/Secret manquantkubectl 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 :

Contactez nos conseillers pour identifier la formation adaptée à votre niveau.