Cycle de vie
docker ps -a
docker run -d --name api -p 8080:8080 api:latest
docker logs -f api
docker exec -it api /bin/sh
Toujours superviser les logs et la sante applicative.
Conteneurs
Choisir la bonne technologie selon vos besoins : Docker, LXC, systemd-nspawn ou KVM. Focus sur la securite, les volumes, et le networking.
Docker
docker ps -a
docker run -d --name api -p 8080:8080 api:latest
docker logs -f api
docker exec -it api /bin/sh
Toujours superviser les logs et la sante applicative.
docker network ls
docker network create backend
docker volume create dbdata
docker run -v dbdata:/var/lib/postgresql data:latest
Isoler les reseaux internes et separer clairement les volumes.
Images
FROM golang:1.22 AS build
WORKDIR /src
RUN go build -o app
FROM debian:stable-slim
COPY --from=build /src/app /usr/local/bin/app
CMD ["app"]
Les multi-stage reduisent drastiquement la taille des images.
dockerd-rootless-setuptool.sh install
export DOCKER_HOST=unix:///run/user/1000/docker.sock
Docker --context rootless ps
Le rootless diminue l'impact d'une compromission.
docker scout cves image:latest
trivy image image:latest
Integrer un scan CVE avant chaque deploy.
systemd-nspawn
sudo debootstrap stable /var/lib/machines/debian
sudo systemd-nspawn -D /var/lib/machines/debian
sudo machinectl list
nspawn est parfait pour des environnements de test rapides.
sudo systemd-nspawn -D /var/lib/machines/debian --private-network
sudo machinectl shell debian
L'isolation reseau est simple a activer, utile pour les tests.
LXC
sudo apt install lxc lxc-templates
sudo lxc-create -n debian -t download
sudo lxc-start -n debian
sudo lxc-info -n debian
LXC est utile quand on veut une VM legere mais complete.
sudo lxc-config show
sudo lxc-attach -n debian
sudo lxc-stop -n debian
Modifier la config via /var/lib/lxc pour ajuster les limites.
KVM
sudo apt install qemu-kvm libvirt-daemon
sudo systemctl enable --now libvirtd
libvirt offre une couche d'orchestration simple.
virt-install --name debian --ram 2048 --disk size=20 --cdrom debian.iso
virsh list --all
virt-install cree des VMs sans interface graphique.
virsh net-list --all
virsh net-start default
virsh net-autostart default
Gerer les bridges pour exposer ou isoler les VMs.
Securite conteneurs
docker run --read-only --cap-drop ALL --tmpfs /tmp app:latest
docker run --user 1000:1000 app:latest
docker run --network backend app:latest
Orchestration
docker compose up -d
docker compose logs -f
docker compose down
Compose est ideal pour regrouper services, reseaux et volumes.
Kubernetes poste dev
Pour un poste de developpeur, minikube ou kind suffisent. Elles permettent un cluster local rapide, sans infra externe.
# Option 1: minikube
sudo apt install kubectl
minikube start --driver=docker
kubectl get nodes
# Option 2: kind
sudo apt install kubectl
kind create cluster --name dev
kubectl get nodes
Organiser les namespaces par projet, versionner les manifests, et garder un cycle deploy/rollback simple.
kubectl create ns demo
kubectl -n demo apply -f k8s/
kubectl -n demo get pods
kubectl -n demo logs -f deploy/app
kubectl -n demo rollout status deploy/app
Sur un cluster de dev, metrics-server suffit pour une vue CPU/RAM. Pour aller plus loin, ajouter Prometheus + Grafana.
kubectl top nodes
kubectl top pods -n demo
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Garder une boite a outils simple pour diagnostiquer rapidement.
kubectl describe pod pod-name -n demo
kubectl get events -n demo --sort-by=.metadata.creationTimestamp
kubectl port-forward svc/app 8080:80 -n demo
Pour un poste dev, kube-prometheus-stack offre metrics, alerting et dashboards sans complexite excessive.
# Helm requis
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install kps prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
kubectl -n monitoring port-forward svc/kps-grafana 3000:80
Pour un setup complet, ajouter Loki (logs) et Tempo (traces). Garder une retention faible sur un poste local.
# Loki
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install loki grafana/loki-stack -n monitoring
# Tempo
helm install tempo grafana/tempo -n monitoring
kubectl -n monitoring port-forward svc/tempo 3100:3100
Ressources
docker run --memory 512m --cpus 1.5 --name api api:latest
systemd-run --unit sandbox --property=MemoryMax=1G --property=CPUQuota=150% /bin/sleep 60
Des limites claires evitent qu'un conteneur degrade le host.
systemd-cgtop
cat /sys/fs/cgroup/system.slice/docker-*.scope/memory.current
cat /sys/fs/cgroup/system.slice/docker-*.scope/cpu.stat
Les stats cgroup montrent les pics et les throttles.
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
kind create cluster --name dev
kubectl get nodes
kubectl top pods -A
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
journalctl -p err -S "today"
systemctl --failed
df -hT
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
rg -n "error" /var/log
ps aux | awk '{print ,,}' | head
sort | uniq -c | sort -nr
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
dig +trace debian.org
resolvectl status
sudo systemctl restart systemd-resolved
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
ss -tulpen
sudo awk -F: '==0 {print }' /etc/passwd
sudo find / -perm -4000 -type f 2>/dev/null
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
sudo btrfs scrub start -Bd /
sudo zpool status
sudo zfs snapshot tank/data
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
htop
sudo perf top
sudo strace -fp 1234
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
docker ps -a
docker run --read-only --cap-drop ALL app:latest
docker network ls
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
kind create cluster --name dev
kubectl get nodes
kubectl top pods -A
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
ss -tulpen
sudo awk -F: '==0 {print }' /etc/passwd
sudo find / -perm -4000 -type f 2>/dev/null
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
sudo btrfs scrub start -Bd /
sudo zpool status
sudo zfs snapshot tank/data
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
htop
sudo perf top
sudo strace -fp 1234
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
docker ps -a
docker run --read-only --cap-drop ALL app:latest
docker network ls
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
kind create cluster --name dev
kubectl get nodes
kubectl top pods -A
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
journalctl -p err -S "today"
systemctl --failed
df -hT
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
rg -n "error" /var/log
ps aux | awk '{print ,,}' | head
sort | uniq -c | sort -nr
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
dig +trace debian.org
resolvectl status
sudo systemctl restart systemd-resolved
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
ss -tulpen
sudo awk -F: '==0 {print }' /etc/passwd
sudo find / -perm -4000 -type f 2>/dev/null
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
sudo btrfs scrub start -Bd /
sudo zpool status
sudo zfs snapshot tank/data
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
htop
sudo perf top
sudo strace -fp 1234
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
docker ps -a
docker run --read-only --cap-drop ALL app:latest
docker network ls
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
kind create cluster --name dev
kubectl get nodes
kubectl top pods -A
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
journalctl -p err -S "today"
systemctl --failed
df -hT
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
rg -n "error" /var/log
ps aux | awk '{print ,,}' | head
sort | uniq -c | sort -nr
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
dig +trace debian.org
resolvectl status
sudo systemctl restart systemd-resolved
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
ss -tulpen
sudo awk -F: '==0 {print }' /etc/passwd
sudo find / -perm -4000 -type f 2>/dev/null
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
sudo btrfs scrub start -Bd /
sudo zpool status
sudo zfs snapshot tank/data
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
htop
sudo perf top
sudo strace -fp 1234
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
docker ps -a
docker run --read-only --cap-drop ALL app:latest
docker network ls
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
kind create cluster --name dev
kubectl get nodes
kubectl top pods -A
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
journalctl -p err -S "today"
systemctl --failed
df -hT
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
rg -n "error" /var/log
ps aux | awk '{print ,,}' | head
sort | uniq -c | sort -nr
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
dig +trace debian.org
resolvectl status
sudo systemctl restart systemd-resolved
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
ss -tulpen
sudo awk -F: '==0 {print }' /etc/passwd
sudo find / -perm -4000 -type f 2>/dev/null
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
sudo btrfs scrub start -Bd /
sudo zpool status
sudo zfs snapshot tank/data
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
htop
sudo perf top
sudo strace -fp 1234
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
docker ps -a
docker run --read-only --cap-drop ALL app:latest
docker network ls
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
kind create cluster --name dev
kubectl get nodes
kubectl top pods -A
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
journalctl -p err -S "today"
systemctl --failed
df -hT
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
rg -n "error" /var/log
ps aux | awk '{print ,,}' | head
sort | uniq -c | sort -nr
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
dig +trace debian.org
resolvectl status
sudo systemctl restart systemd-resolved
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
ss -tulpen
sudo awk -F: '==0 {print }' /etc/passwd
sudo find / -perm -4000 -type f 2>/dev/null
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
sudo btrfs scrub start -Bd /
sudo zpool status
sudo zfs snapshot tank/data
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
htop
sudo perf top
sudo strace -fp 1234
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
docker ps -a
docker run --read-only --cap-drop ALL app:latest
docker network ls
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
kind create cluster --name dev
kubectl get nodes
kubectl top pods -A
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
journalctl -p err -S "today"
systemctl --failed
df -hT
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
rg -n "error" /var/log
ps aux | awk '{print ,,}' | head
sort | uniq -c | sort -nr
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
dig +trace debian.org
resolvectl status
sudo systemctl restart systemd-resolved
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
ss -tulpen
sudo awk -F: '==0 {print }' /etc/passwd
sudo find / -perm -4000 -type f 2>/dev/null
Mise a jour quotidienne
Cette section est ajoutee automatiquement et vise un public confirme.
sudo btrfs scrub start -Bd /
sudo zpool status
sudo zfs snapshot tank/data