đŸ‘ïž 19 vues

🐳 Docker sur macOS Apple Silicon avec Colima

Guide complet d’installation + bonnes pratiques + QEMU optionnel + intĂ©gration VS Code + templates .devcontainer.
Sans Docker Desktop — approche recommandĂ©e pour un environnement de dev moderne.


🎯 Objectif

Mettre en place un environnement Docker :

  • ✅ LĂ©ger et performant sur Apple Silicon (M1/M2/M3/M4)
  • ✅ 100 % open source (pas de dĂ©pendance Docker Desktop)
  • ✅ Reproductible (CI/CD friendly)
  • ✅ IntĂ©grĂ© proprement avec VS Code (Docker + Dev Containers)
  • ✅ Compatible images Intel via QEMU (optionnel)

🧠 Pourquoi ne pas utiliser Docker Desktop ?

Sur macOS, Docker ne tourne pas “nativement” (pas de kernel Linux). Il faut donc une VM Linux.

Docker Desktop fournit cette VM mais ajoute :

  • une surcouche propriĂ©taire + UI
  • une consommation CPU/RAM plus Ă©levĂ©e
  • une licence payante en entreprise (selon conditions Docker)

👉 Colima fournit une VM Linux minimaliste via Lima avec de trùs bonnes perfs et un workflow CLI standard :

Docker CLI → Colima → Lima VM → Linux ARM64 natif

📩 1) PrĂ©-requis

✅ 1.1 VĂ©rifier que tu es bien sur Apple Silicon

uname -m

Résultat attendu : arm64.

✅ 1.2 Installer Homebrew (si absent)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Puis :

brew update
brew doctor

🔧 2) Installer Docker (CLI) + Colima

⚠ On installe le CLI Docker, pas Docker Desktop.

brew install colima docker docker-compose

đŸ§© QEMU (optionnel — voir section dĂ©diĂ©e)

Ne l’installe que si tu dois exĂ©cuter des images amd64 (Intel) sur ton Mac ARM.


🚀 3) DĂ©marrer Colima (configuration recommandĂ©e)

Démarrage optimisé poste dev (à adapter selon RAM/CPU) :

colima start --cpu 4 --memory 6 --disk 60 --arch aarch64

Recommandations ressources

Ressource Valeur conseillée
CPU 4 (ou ~œ de tes cores)
RAM 6–8 Go (plus si grosses stacks)
Disque ≄ 60 Go
Arch aarch64 (ARM natif)

💡 Évite x86_64 : ce serait de l’émulation, donc plus lent.


✅ 4) VĂ©rifier l’installation

docker version

Tu dois voir Client et Server.

Test réel :

docker run --rm hello-world

⚙ 5) VĂ©rifier / fixer le contexte Docker

Colima crée généralement un contexte Docker dédié.

Lister :

docker context ls

RĂ©sultat attendu : colima * (l’astĂ©risque indique le contexte actif).

Si nécessaire :

docker context use colima

📁 6) Workflow quotidien recommandĂ©

Démarrer la VM quand tu en as besoin :

colima start

Lancer ton projet :

docker compose up -d

ArrĂȘter proprement en fin de journĂ©e :

colima stop

✅ Avantage : pas de daemon Docker qui tourne en permanence et consomme des ressources.


⚡ 7) Bonnes pratiques de performance (macOS + VM)

7.1 Préférer des images ARM64 natives

Apple Silicon = linux/arm64. Beaucoup d’images sont multi-arch, mais pas toutes.

Vérifier une image :

docker buildx imagetools inspect nginx

Tu veux voir linux/arm64 dans la liste des plateformes.

7.2 Volumes & filesystem : rùgles d’or

Sur macOS, ton code est montĂ© dans une VM Linux → I/O plus sensibles qu’un Linux natif.

✅ À faire

  • Monter uniquement les dossiers nĂ©cessaires
  • Utiliser des volumes Docker pour DB/cache (meilleures perfs + moins de surprises)
  • Avoir un .dockerignore strict
  • Limiter les gros rĂ©pertoires “bruyants” (ex: node_modules, caches)

❌ À Ă©viter

  • Binder tout $HOME
  • Synchroniser des centaines de milliers de fichiers inutilement
  • Binder node_modules si tu peux l’éviter

Exemple de volume “acceptable”

services:
  app:
    volumes:
      - .:/app:delegated

🧠 8) Commandes Colima utiles

Commande Usage
colima start Démarrer la VM
colima stop ArrĂȘter
colima restart Redémarrer
colima status État + ressources
colima ssh Shell dans la VM (debug)
colima delete Reset complet (⚠ supprime donnĂ©es VM)

📍 9) OĂč sont stockĂ©es les donnĂ©es ?

Colima stocke ses données ici :

~/.colima/

Tu peux y trouver configuration, disque VM, etc. (utile pour debug/backup).


đŸ§© 10) QEMU (OPTIONNEL)

10.1 À quoi sert QEMU ?

Ton Mac est ARM64. Certaines images Docker sont uniquement Intel (amd64).
QEMU permet d’exĂ©cuter ces images via Ă©mulation CPU.

Sans QEMU, tu peux rencontrer :

exec format error

Avec QEMU :

  • l’image peut dĂ©marrer
  • mais c’est plus lent

10.2 Quand l’installer ?

Uniquement si tu dois utiliser :

  • des images legacy non multi-arch
  • des outils internes entreprise construits en amd64
  • certaines bases/outils “historiques”

10.3 Installer QEMU (option)

brew install qemu
colima restart

10.4 Impact performance

Mode Performance
ARM natif đŸ”„ trĂšs bon
amd64 via QEMU 🐱 3× à 6× plus lent (parfois plus)

10.5 VĂ©rifier l’architecture d’une image

docker image inspect <image> | grep -i architecture

đŸ’» 11) VS Code : extensions & configuration

11.1 Extensions recommandées

  • Docker — ms-azuretools.vscode-docker
  • Dev Containers — ms-vscode-remote.remote-containers
  • Remote Explorer — ms-vscode.remote-explorer
  • GitLens — eamodio.gitlens (optionnel mais pratique)

11.2 Forcer VS Code Ă  utiliser le socket Colima

VS Code peut chercher Docker Desktop par défaut. Configure le socket Colima dans settings.json :

{
  "docker.host": "unix:///Users/<USER>/.colima/default/docker.sock"
}

Remplace <USER> par ton user macOS.

11.3 Tester

Dans VS Code :
Cmd + Shift + P → Docker: Show Containers

Tu dois voir les containers gérés par Colima.


📩 12) Qu’est-ce qu’un template .devcontainer ?

Un template .devcontainer permet d’ouvrir ton projet directement dans un conteneur avec tout l’environnement prĂȘt : langages, outils, extensions VS Code, etc.

👉 VS Code exĂ©cute le workspace dans le container, pas sur ton Mac.

Pourquoi c’est une best practice ?

  • ✅ Environnement reproductible
  • ✅ ZĂ©ro “ça marche sur ma machine”
  • ✅ Onboarding immĂ©diat d’un dev
  • ✅ Alignement DEV/CI/PROD
  • ✅ Mac propre (moins d’installations locales)

12.1 Structure typique

my-project/
├── docker-compose.yml
└── .devcontainer/
    ├── devcontainer.json
    └── Dockerfile   (optionnel)

12.2 Exemple devcontainer.json (avec docker-compose)

{
  "name": "Dev Environment",
  "dockerComposeFile": "../docker-compose.yml",
  "service": "app",
  "workspaceFolder": "/workspace",

  "customizations": {
    "vscode": {
      "extensions": [
        "ms-azuretools.vscode-docker",
        "ms-vscode-remote.remote-containers",
        "eamodio.gitlens"
      ]
    }
  }
}

Ce fichier :

  1. démarre docker compose
  2. se connecte au service app
  3. monte ton code dans /workspace
  4. installe les extensions VS Code listées

12.3 Exemple Dockerfile “dev” (optionnel)

Si tu veux un conteneur spécifique au développement (outils, debug, etc.) :

FROM php:8.3-cli

RUN apt-get update && apt-get install -y \
    git unzip curl ca-certificates

# Exemple: dépendances PHP
RUN docker-php-ext-install pdo pdo_mysql

# Exemple: xdebug
# RUN pecl install xdebug && docker-php-ext-enable xdebug

12.4 Utiliser Dev Containers dans VS Code

Ouvre le dossier du projet, puis :

Cmd + Shift + P → Dev Containers: Reopen in Container

VS Code va :

  • construire/mettre Ă  jour l’image (si besoin)
  • dĂ©marrer les services (compose)
  • connecter ton IDE au conteneur
  • installer les extensions

đŸ—ïž 13) Build multi-architecture (CI/CD)

Pour builder des images compatibles ARM + Intel :

docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest .

💡 Ajoute --push si tu pousses sur un registry.


đŸ§č 14) Maintenance

Nettoyage des ressources Docker :

docker system prune -af

Reset complet de Colima (⚠ supprime la VM) :

colima delete
colima start --cpu 4 --memory 6 --disk 60 --arch aarch64

✅ Conclusion

Stack recommandée sur macOS Apple Silicon :

Colima + Docker CLI + VS Code Dev Containers
(QEMU uniquement si legacy amd64)

Tu obtiens :

  • une VM Linux minimaliste et performante
  • un workflow Docker standard
  • un environnement dev reproductible et industrialisable
  • une intĂ©gration IDE propre, portable et scalable

Il n'y a actuellement aucun commentaire, alors soyez le premier !