Docker Cheatsheet

Docker révolutionne le déploiement d’applications en utilisant la containerisation. Cette cheatsheet couvre toutes les commandes essentielles.

🐳 Installation de Docker

Ubuntu/Debian

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Désinstaller anciennes versions
sudo apt remove docker docker-engine docker.io containerd runc

# Installation via repository officiel
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release

# Ajouter clé GPG
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Ajouter repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Installer Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Ajouter utilisateur au groupe docker
sudo usermod -aG docker $USER

CentOS/RHEL/Fedora

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Installer yum-utils
sudo yum install -y yum-utils

# Ajouter repository
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# Installer Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Démarrer et activer Docker
sudo systemctl start docker
sudo systemctl enable docker

Vérification installation

1
2
docker --version
docker run hello-world

📦 Gestion des images

Télécharger et lister des images

CommandeDescription
docker pull ubuntu:22.04Télécharger image Ubuntu 22.04
docker pull nginx:latestTélécharger dernière version Nginx
docker imagesLister toutes les images
docker images -qLister seulement les IDs
docker images --filter dangling=trueImages orphelines
docker image lsAlternative à docker images

Construire des images

1
2
3
4
5
6
7
8
9
# Construire depuis Dockerfile
docker build -t mon-app:v1.0 .
docker build -t mon-app:latest -f Dockerfile.prod .

# Construire sans cache
docker build --no-cache -t mon-app:v1.0 .

# Construire avec arguments
docker build --build-arg VERSION=1.0 -t mon-app .

Gestion avancée des images

CommandeDescription
docker tag SOURCE_IMAGE TARGET_IMAGETaguer une image
docker rmi image_idSupprimer une image
docker rmi $(docker images -q)Supprimer toutes les images
docker image pruneSupprimer images inutilisées
docker image prune -aSupprimer toutes images non utilisées
docker history image_nameHistorique des couches
docker inspect image_nameInformations détaillées

Registry et partage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Connexion à un registry
docker login
docker login registry.example.com

# Pousser une image
docker push username/mon-app:v1.0

# Sauvegarder/charger images
docker save -o mon-app.tar mon-app:v1.0
docker load -i mon-app.tar

🏃‍♂️ Gestion des containers

Lancer des containers

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# Lancer container en mode détaché
docker run -d --name mon-nginx nginx

# Lancer avec port mapping
docker run -d -p 8080:80 --name web-server nginx

# Lancer avec variables d'environnement
docker run -d -e MYSQL_ROOT_PASSWORD=secret mysql:8.0

# Lancer en mode interactif
docker run -it ubuntu:22.04 /bin/bash
docker run -it --rm ubuntu:22.04 /bin/bash  # suppression auto

# Lancer avec volume
docker run -d -v /host/path:/container/path nginx

# Lancer avec limits de ressources
docker run -d --memory="512m" --cpus="1.0" nginx

Contrôle des containers

CommandeDescription
docker psContainers en cours d’exécution
docker ps -aTous les containers
docker ps -qSeulement les IDs des containers actifs
docker start container_nameDémarrer container
docker stop container_nameArrêter container
docker restart container_nameRedémarrer container
docker pause container_nameMettre en pause
docker unpause container_nameReprendre
docker kill container_nameTuer brutalement

Interaction avec les containers

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Exécuter commande dans container
docker exec -it container_name /bin/bash
docker exec -it container_name sh

# Exécuter commande ponctuelle
docker exec container_name ls -la
docker exec container_name nginx -t  # test config nginx

# Copier fichiers
docker cp file.txt container_name:/path/to/destination
docker cp container_name:/path/to/file.txt ./local-file.txt

Logs et monitoring

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Voir les logs
docker logs container_name
docker logs -f container_name  # suivi en temps réel
docker logs --tail 50 container_name  # 50 dernières lignes
docker logs --since="2024-01-01" container_name

# Statistiques en temps réel
docker stats
docker stats container_name

# Informations détaillées
docker inspect container_name
docker top container_name  # processus dans le container

Nettoyage des containers

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Supprimer container
docker rm container_name
docker rm -f container_name  # forcer suppression

# Supprimer tous containers arrêtés
docker container prune

# Supprimer tous containers
docker rm $(docker ps -aq)
docker rm -f $(docker ps -aq)  # forcer

💾 Gestion des volumes

Types de volumes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Volume nommé
docker volume create mon-volume
docker run -d -v mon-volume:/data nginx

# Bind mount (dossier hôte)
docker run -d -v /home/user/data:/data nginx
docker run -d --mount type=bind,source=/home/user/data,target=/data nginx

# tmpfs mount (mémoire)
docker run -d --tmpfs /tmp nginx
docker run -d --mount type=tmpfs,destination=/tmp nginx

Commandes de gestion des volumes

CommandeDescription
docker volume lsLister les volumes
docker volume create volume_nameCréer un volume
docker volume inspect volume_nameInformations sur le volume
docker volume rm volume_nameSupprimer volume
docker volume pruneSupprimer volumes inutilisés

Sauvegarde et restauration

1
2
3
4
5
# Sauvegarder volume
docker run --rm -v mon-volume:/data -v $(pwd):/backup ubuntu tar czf /backup/backup.tar.gz -C /data .

# Restaurer volume
docker run --rm -v mon-volume:/data -v $(pwd):/backup ubuntu tar xzf /backup/backup.tar.gz -C /data

🌐 Gestion des réseaux

Types de réseaux Docker

  • bridge : Réseau par défaut pour containers sur même hôte
  • host : Container utilise directement réseau hôte
  • none : Aucune connectivité réseau
  • overlay : Communication entre containers sur différents hôtes

Commandes réseau

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# Créer réseau personnalisé
docker network create mon-reseau
docker network create --driver bridge mon-bridge

# Lister réseaux
docker network ls

# Informations réseau
docker network inspect bridge
docker network inspect mon-reseau

# Connecter container à réseau
docker network connect mon-reseau container_name

# Déconnecter
docker network disconnect mon-reseau container_name

# Supprimer réseau
docker network rm mon-reseau
docker network prune  # supprimer réseaux inutilisés

Utilisation des réseaux

1
2
3
4
5
6
# Lancer container sur réseau spécifique
docker run -d --network mon-reseau --name web nginx
docker run -d --network mon-reseau --name db mysql:8.0

# Communication entre containers par nom
docker exec -it web ping db

📋 Dockerfile - Construction d’images

Structure de base

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Image de base
FROM ubuntu:22.04

# Métadonnées
LABEL maintainer="admin@example.com"
LABEL version="1.0"
LABEL description="Mon application web"

# Variables d'environnement
ENV APP_ENV=production
ENV APP_PORT=8000

# Répertoire de travail
WORKDIR /app

# Copier fichiers
COPY . /app/
COPY requirements.txt .

# Installer dépendances
RUN apt-get update && \
    apt-get install -y python3 python3-pip && \
    pip3 install -r requirements.txt && \
    apt-get clean

# Exposer port
EXPOSE 8000

# Utilisateur non-root
RUN useradd -m appuser
USER appuser

# Point d'entrée
ENTRYPOINT ["python3"]
CMD ["app.py"]

Instructions Dockerfile principales

InstructionDescriptionExemple
FROMImage de baseFROM node:16
RUNExécuter commandeRUN npm install
COPYCopier fichiersCOPY . /app
ADDCopier + extractionADD archive.tar /app
WORKDIRRépertoire de travailWORKDIR /app
EXPOSEPort exposéEXPOSE 80
ENVVariable d’environnementENV NODE_ENV=prod
CMDCommande par défautCMD ["npm", "start"]
ENTRYPOINTPoint d’entrée fixeENTRYPOINT ["nginx"]

Bonnes pratiques Dockerfile

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Multi-stage build
FROM node:16 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

FROM node:16-alpine AS runtime
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
USER 1000
CMD ["npm", "start"]

🐙 Docker Compose

Installation Docker Compose

1
2
3
4
5
6
# Vérifier si installé avec Docker Desktop
docker compose version

# Installation manuelle (Linux)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Fichier docker-compose.yml basique

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
version: '3.8'

services:
  web:
    build: .
    ports:
      - "8000:8000"
    environment:
      - DEBUG=1
    volumes:
      - .:/app
    depends_on:
      - db
      - redis

  db:
    image: postgres:14
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  postgres_data:

Commandes Docker Compose

CommandeDescription
docker compose upDémarrer services
docker compose up -dDémarrer en arrière-plan
docker compose downArrêter et supprimer containers
docker compose down -v+ supprimer volumes
docker compose psÉtat des services
docker compose logsLogs de tous services
docker compose logs webLogs du service web
docker compose exec web bashShell dans service
docker compose buildConstruire images
docker compose pullTélécharger images
docker compose restartRedémarrer services

Configuration avancée

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.prod
      args:
        - BUILD_ENV=production
    ports:
      - "80:80"
    environment:
      - APP_ENV=production
    volumes:
      - ./uploads:/app/uploads
    networks:
      - frontend
      - backend
    restart: unless-stopped
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 512M
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/health"]
      interval: 30s
      timeout: 10s
      retries: 3

networks:
  frontend:
  backend:
    driver: bridge

🔧 Docker utilitaires et outils

Système et maintenance

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Informations système Docker
docker system info
docker system df  # utilisation disque

# Nettoyage général
docker system prune  # containers, réseaux, images
docker system prune -a  # tout nettoyer
docker system prune -a --volumes  # inclure volumes

# Events en temps réel
docker system events
docker system events --filter container=mon-container

Sécurité

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Scanner vulnerabilités (Docker Desktop)
docker scout quickview
docker scout cves image_name

# Lancer container en lecture seule
docker run --read-only nginx

# Limiter capabilities
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx

# Utiliser utilisateur non-root
docker run --user 1000:1000 nginx

Optimisation et performance

1
2
3
4
5
6
7
8
# Limiter ressources
docker run -m 512m --cpus="1.5" nginx

# Utiliser cache pour build
docker build --build-arg BUILDKIT_INLINE_CACHE=1 .

# Multi-platform build
docker buildx build --platform linux/amd64,linux/arm64 -t app:latest .

🚀 Exemples pratiques complets

Application web Python + PostgreSQL

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# docker-compose.yml
version: '3.8'

services:
  web:
    build: .
    ports:
      - "5000:5000"
    environment:
      - DATABASE_URL=postgresql://user:password@db:5432/webapp
    depends_on:
      - db
    volumes:
      - .:/app
    
  db:
    image: postgres:14
    environment:
      POSTGRES_DB: webapp
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

volumes:
  postgres_data:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Dockerfile
FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["python", "app.py"]

Stack NGINX + PHP + MySQL

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# docker-compose.yml
version: '3.8'

services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./public:/var/www/html
    depends_on:
      - php

  php:
    image: php:8.1-fpm
    volumes:
      - ./public:/var/www/html
    environment:
      - MYSQL_HOST=mysql
      - MYSQL_DATABASE=webapp
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: webapp
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

volumes:
  mysql_data:

Application Node.js avec Redis

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# docker-compose.yml
version: '3.8'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - REDIS_URL=redis://redis:6379
    depends_on:
      - redis
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data
    ports:
      - "6379:6379"

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - app

volumes:
  redis_data:

🐳 Docker Swarm (orchestration)

Initialisation du swarm

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Initialiser swarm manager
docker swarm init

# Rejoindre swarm comme worker
docker swarm join --token SWMTKN-1-xxx manager-ip:2377

# Lister nodes
docker node ls

# Promouvoir worker en manager
docker node promote node-name

Services Swarm

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Créer service
docker service create --name web --replicas 3 -p 80:80 nginx

# Lister services
docker service ls
docker service ps web

# Mettre à jour service
docker service update --image nginx:alpine web
docker service scale web=5

# Supprimer service
docker service rm web

Stack deployment

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# docker-stack.yml
version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure
    networks:
      - webnet

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]

networks:
  webnet:
1
2
3
4
5
6
7
8
9
# Déployer stack
docker stack deploy -c docker-stack.yml mystack

# Lister stacks
docker stack ls
docker stack services mystack

# Supprimer stack
docker stack rm mystack

🔍 Debugging et troubleshooting

Diagnostics containers

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Vérifier processus container
docker exec container_name ps aux

# Vérifier connectivité réseau
docker exec container_name ping google.com
docker exec container_name nslookup database

# Vérifier ports ouverts
docker exec container_name netstat -tlnp

# Vérifier filesystem
docker exec container_name df -h
docker exec container_name ls -la /path

Analyse des logs

1
2
3
4
5
6
7
8
9
# Logs détaillés avec timestamps
docker logs --timestamps container_name

# Filtrer logs par date
docker logs --since="2024-01-01T00:00:00" container_name
docker logs --until="2024-01-01T23:59:59" container_name

# Logs en continu avec grep
docker logs -f container_name | grep ERROR

Problèmes courants et solutions

ProblèmeSolution
Container s’arrête immédiatementVérifier CMD/ENTRYPOINT, logs
Port déjà utiliséChanger port mapping -p 8081:80
Permission deniedVérifier utilisateur, SELinux
Out of disk spacedocker system prune -a
Container ne démarre pasdocker logs container_name
DNS ne fonctionne pasVérifier réseau Docker

📊 Monitoring et observabilité

Docker stats et métriques

1
2
3
4
5
6
# Stats en temps réel
docker stats
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

# Export métriques
docker stats --no-stream --format "json" > stats.json

Intégration monitoring

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Prometheus + Grafana stack
version: '3.8'

services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    volumes:
      - grafana_data:/var/lib/grafana

  cadvisor:
    image: gcr.io/cadvisor/cadvisor
    ports:
      - "8080:8080"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

volumes:
  grafana_data:

🔒 Sécurité Docker

Bonnes pratiques sécurité

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# Dockerfile sécurisé
FROM node:16-alpine

# Créer utilisateur non-root
RUN addgroup -g 1001 -S nodejs && \
    adduser -S nextjs -u 1001

# Copier seulement nécessaire
COPY --chown=nextjs:nodejs package*.json ./
RUN npm ci --only=production && npm cache clean --force

# Utiliser utilisateur non-root
USER nextjs

# Exposer port non-privilégié
EXPOSE 3000

# Sanity check
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:3000/health || exit 1

Runtime security

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# Lancer avec restrictions
docker run --security-opt=no-new-privileges:true \
           --cap-drop ALL \
           --cap-add NET_BIND_SERVICE \
           --read-only \
           --tmpfs /tmp \
           --user 1000:1000 \
           nginx

# Scanner image pour vulnérabilités
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
           aquasec/trivy image nginx:latest

📚 Ressources et outils utiles

Extensions et plugins

1
2
3
# Docker extensions utiles
docker extension install docker/logs-explorer-extension
docker extension install docker/disk-usage-extension

Outils de développement

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Docker-compose override pour dev
# docker-compose.override.yml
version: '3.8'
services:
  app:
    volumes:
      - .:/app
    environment:
      - DEBUG=1
    command: npm run dev

Scripts utiles

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
# docker-cleanup.sh - Nettoyage complet

echo "🧹 Nettoyage Docker en cours..."

# Arrêter tous containers
docker stop $(docker ps -q) 2>/dev/null

# Supprimer containers arrêtés
docker container prune -f

# Supprimer images inutilisées
docker image prune -a -f

# Supprimer volumes non utilisés
docker volume prune -f

# Supprimer réseaux non utilisés
docker network prune -f

# Nettoyage système complet
docker system prune -a --volumes -f

echo "✅ Nettoyage terminé!"
docker system df

💡 Tips et astuces avancées

Optimisation des builds

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Utiliser .dockerignore
# .dockerignore
node_modules
.git
*.md
.env.local

# Multi-stage pour réduire taille
FROM node:16 AS dependencies
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

FROM node:16-alpine AS runtime
WORKDIR /app
COPY --from=dependencies /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

Variables d’environnement

1
2
3
4
5
6
7
# Fichier .env pour docker-compose
# .env
MYSQL_ROOT_PASSWORD=secure_password
MYSQL_DATABASE=myapp
MYSQL_USER=appuser
MYSQL_PASSWORD=apppass
NODE_ENV=production

Automation avec Makefile

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Makefile
.PHONY: build up down logs clean

build:
	docker-compose build

up:
	docker-compose up -d

down:
	docker-compose down

logs:
	docker-compose logs -f

clean:
	docker system prune -a --volumes -f

restart: down up

shell-app:
	docker-compose exec app /bin/bash

backup-db:
	docker-compose exec db pg_dump -U user myapp > backup.sql

🎯 Commandes de référence rapide

One-liners utiles

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Supprimer tous containers
docker rm -f $(docker ps -aq)

# Supprimer toutes images
docker rmi -f $(docker images -q)

# Entrer dans dernier container lancé
docker exec -it $(docker ps -q -l) /bin/bash

# Logs de tous containers
docker ps -q | xargs -I {} docker logs {}

# Statistiques formatées
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"

# Backup volume vers tar
docker run --rm -v volume_name:/data -v $(pwd):/backup alpine tar czf /backup/backup.tar.gz -C /data .

Alias bash utiles

1
2
3
4
5
6
7
8
9
# Ajouter à ~/.bashrc
alias dps='docker ps'
alias dpa='docker ps -a'
alias di='docker images'
alias dlog='docker logs -f'
alias dex='docker exec -it'
alias dcu='docker-compose up -d'
alias dcd='docker-compose down'
alias dcl='docker-compose logs -f'

Docker révolutionne le déploiement d’applications. Maîtrisez ces commandes pour optimiser vos workflows de développement et de production !