Come usare Docker Desktop su MacBook con Apple Silicon senza rallentamenti
Guida pratica per sfruttare al meglio Docker Desktop sui Mac con chip M1, M2 e M3: impostazioni di VirtioFS, Rosetta 2, memoria e alternative come OrbStack o Colima quando Docker non basta.

Se lavori con i container su un MacBook con Apple Silicon, sai già che Docker Desktop non sempre va fluido. Si avvia lentamente, consuma molta RAM, la ventola si accende quando costruisci un’immagine di medie dimensioni e, se la tua immagine è linux/amd64, la situazione peggiora. Questa guida parla proprio di questo: come rendere Docker Desktop utilizzabile su un Mac M1, M2 o M3, quali impostazioni modificare, quando accettare che Docker non sia la scelta migliore e quali alternative meritano attenzione.
Tutto quello che segue è stato testato su macOS Sequoia 15.1 con Docker Desktop 4.35 su un MacBook Pro M3 Pro con 18 GB di RAM e un MacBook Air M2 con 16 GB. I principi valgono allo stesso modo per M1.
Perché Docker Desktop va lento su Apple Silicon
Docker non funziona in modo nativo su macOS. Non lo ha mai fatto. Docker richiede un kernel Linux, che macOS non ha. Ciò che fa Docker Desktop è avviare una macchina virtuale Linux leggera usando il framework di virtualizzazione di Apple (Virtualization.framework su Apple Silicon) ed eseguire al suo interno il daemon di Docker.
Questo significa due cose: c’è uno strato di virtualizzazione costante e c’è un ponte tra il file system di macOS e il file system della VM. Quel ponte è storicamente stato il grande collo di bottiglia.
A questo si aggiungono le immagini linux/amd64. Il tuo Mac è ARM64. Se avvii un container x86_64, Docker lo emula tramite Rosetta 2 oppure QEMU. Emulare un’intera architettura ha un costo: tra il 30% e il 60% di prestazioni perse a seconda del carico.
Requisiti preliminari
- macOS 13 Ventura o successivo (consigliato Sequoia per una VirtioFS stabile).
- Docker Desktop 4.25 o successivo. La 4.35 introduce miglioramenti notevoli nella gestione delle risorse.
- Mac con chip M1, M2, M3 (o successivi) e almeno 16 GB di RAM se prevedi di far girare più di due container contemporaneamente.
- Rosetta 2 installato:
softwareupdate --install-rosetta --agree-to-license.
Installare Docker Desktop su Mac Apple Silicon
Scarica il programma di installazione per Apple Silicon da docker.com. Attenzione: esistono due build, quella per Intel e quella per Apple Silicon. Se scarichi quella per Intel per errore, tutto passerà da Rosetta e perderai prestazioni inutilmente.
Trascina l’app in /Applications, aprila, accetta i permessi di rete privilegiata e attendi che la balena compaia nella barra dei menu.
Impostazioni chiave per evitare che Docker rallenti
Qui si trova l’80% dell’articolo. Sono queste le impostazioni che fanno la differenza reale.
Attivare VirtioFS come file system
VirtioFS ha sostituito gRPC-FUSE. È tra 2x e 5x più veloce in lettura e scrittura sui volumi montati da macOS. Ora è il valore predefinito, ma se provieni da un’installazione vecchia potresti ancora usare gRPC-FUSE.
Percorso: Docker Desktop → Settings → General → Virtual Machine Options → VirtioFS.
Riavvia Docker dopo la modifica. Noterai la differenza in qualsiasi progetto Node, PHP o Python che monti node_modules o vendor dalla tua cartella locale.
Usare il nuovo Virtualization Framework di Apple
Nella stessa schermata, seleziona Use Virtualization framework (quello di Apple, non QEMU). È quello che sfrutta l’accelerazione hardware del chip M.
Subito sotto, attiva Use Rosetta for x86_64/amd64 emulation. Questo sostituisce l’emulazione QEMU con Rosetta 2 quando esegui immagini amd64. Il miglioramento sulle immagini x86_64 è notevole: nei test con container MySQL 8 amd64, l’avvio è sceso da 40 secondi a meno di 15.
Regolare risorse di CPU, memoria e disco
Percorso: Settings → Resources → Advanced.
Per impostazione predefinita Docker Desktop assegna una quota prudente. Su un Mac da 16 GB, porta la memoria a 8 GB se lavorerai con database. Su uno da 18 GB o più, tra 8 e 10 GB. Non superare il 50% della RAM totale: macOS deve respirare.
CPU: lascia almeno 2 core liberi per il sistema. Su un M3 Pro da 12 core, assegnarne 8 a Docker non crea problemi.
Disco: il disco virtuale cresce on demand. Imposta un limite ragionevole (64 GB di solito bastano) e pulisci le immagini vecchie con docker system prune -a ogni due settimane.
Disattivare le funzioni che non usi
In Settings → General, deseleziona Send usage statistics, Open Docker Dashboard at startup se non ti serve, e SBOM indexing se non analizzi le vulnerabilità. Ognuna di queste consuma cicli.
In Settings → Kubernetes, lascia disattivato Kubernetes a meno che tu non lo usi davvero. Un cluster K8s locale occupa 2 GB di RAM anche se non fai nulla.
Lavorare con immagini ARM64 ogni volta che è possibile
Il modo più rapido per far volare Docker sul tuo Mac è non emulare nulla. Molte immagini ufficiali hanno già build linux/arm64: PostgreSQL, Redis, Nginx, Node, Python, Ruby, Go, la maggior parte dei database moderni.
Controlla le architetture disponibili prima di fare pull:
docker manifest inspect postgres:16 | grep architecture
Se vedi arm64, scegli quella senza forzare la piattaforma. Se c’è solo amd64, allora sì, ti serve Rosetta.
Per forzare una piattaforma specifica:
docker run --platform linux/arm64 postgres:16
docker run --platform linux/amd64 mysql:5.7
Nel tuo docker-compose.yml, aggiungi platform: linux/arm64 a ogni servizio per evitare sorprese.
Quando Rosetta 2 salva la situazione e quando no
Rosetta 2 funziona bene con i binari statici e con le applicazioni che eseguono calcoli di uso generale. Per database vecchi, strumenti legacy o immagini aziendali che esistono solo in amd64, attivare Rosetta ti toglie dai guai.
Dove Rosetta fatica ancora: carichi con molta I/O intensivo, JVM vecchie (Java 8 amd64 può andare in crash) e alcuni binari che fanno syscall insolite. Se un container amd64 ti dà errori strani con Rosetta attivo, prova a disattivarlo e tornare a QEMU solo per quel caso.
Ottimizzare l’uso dei volumi
Montare le cartelle di macOS dentro il container resta l’operazione più costosa, anche con VirtioFS. Tre regole:
- Non montare
node_modules,vendoro.gitse puoi evitarlo. Usa volumi con nome di Docker per queste directory: vivono dentro la VM e sono ordini di grandezza più veloci. - Usa
:delegatedo:cachedsui mount che non richiedono una coerenza stretta. Con VirtioFS l’impatto è minore di prima, ma esiste ancora. - Evita i watcher di file massivi. Se il tuo framework ricompila a ogni modifica di un file, limita i percorsi osservati.
Esempio di volume con nome per node_modules:
services:
app:
build: .
volumes:
- .:/app
- node_modules:/app/node_modules
volumes:
node_modules:
Alternative a Docker Desktop su Mac
Docker Desktop non è l’unica opzione, e in alcuni casi non è nemmeno la migliore. Tre alternative valide:
OrbStack
OrbStack è la cosa più simile a “Docker Desktop ma veloce”. Consuma meno RAM (si avvia con circa 400 MB contro gli 1,5 GB di Docker Desktop), parte in 2-3 secondi e usa una propria implementazione della virtualizzazione su Apple Silicon. È compatibile con la CLI di Docker senza modifiche.
Costa 8 dollari al mese per uso commerciale, gratuito per uso personale. Se lavori tutto il giorno con i container, si ripaga da solo con la batteria risparmiata.
Colima
Colima è gratuito, open source e funziona da riga di comando. Avvia una VM Linux con Lima ed espone un socket Docker. Nessuna interfaccia grafica.
Installazione:
brew install colima docker
colima start --cpu 4 --memory 8 --vm-type vz --vz-rosetta
Il flag --vz-rosetta attiva Rosetta per amd64. Ideale se vivi nel terminale e non vuoi un’app in esecuzione permanente.
Podman
Podman è l’approccio di Red Hat: senza daemon, rootless, compatibile con la CLI di Docker tramite alias. Su Apple Silicon funziona bene, ma il suo ecosistema di immagini e l’integrazione con strumenti come docker-compose restano meno rifiniti.
Buona scelta se provieni da ambienti RHEL o se vuoi allinearti alla produzione su Kubernetes/OpenShift.
Comandi utili per diagnosticare le prestazioni
Vedere quale container sta consumando le risorse:
docker stats
Vedere la dimensione reale di immagini, container e volumi:
docker system df
Pulire tutto ciò che non è in uso (attenzione, elimina le immagini senza un container associato):
docker system prune -a --volumes
Problemi comuni e come risolverli
Docker Desktop non si avvia dopo l’aggiornamento di macOS. Riavvia il servizio: killall Docker && open /Applications/Docker.app. Se il problema persiste, vai su Troubleshoot → Reset to factory defaults.
La ventola va al massimo durante la costruzione delle immagini. Riduci la CPU assegnata a Docker in Settings → Resources. Se non cambia nulla, controlla se il tuo Dockerfile contiene RUN con processi che si parallelizzano (npm install, cargo build).
I volumi montati sono lentissimi. Verifica che VirtioFS sia attivo e valuta di spostare le directory pesanti in volumi con nome.
Un container amd64 non si avvia. Controlla che Rosetta sia installato (arch -x86_64 uname -m dovrebbe restituire x86_64). Se continua a fallire, quel binario specifico non è compatibile con Rosetta 2; usa QEMU disattivando l’opzione Rosetta.
Docker Desktop consuma 3 GB di RAM a riposo. È normale nelle versioni vecchie. Aggiorna alla 4.30 o successiva; il gestore di memoria dinamico restituisce la RAM al sistema quando non ci sono container attivi.
FAQ
Posso usare Docker Desktop gratis per lavoro? No, se lavori in un’azienda con più di 250 dipendenti o con più di 10 milioni di dollari di fatturato annuo. Per uso personale, didattico e per piccole startup, sì. Consulta la licenza ufficiale di Docker.
Vale la pena passare a OrbStack? Se usi i container ogni giorno e ti infastidisce il consumo di Docker Desktop, sì. Per un uso occasionale, Docker Desktop è sufficiente.
Rosetta 2 emula perfettamente qualsiasi immagine amd64? No. Copre la maggior parte dei casi, ma binari molto specifici (JVM vecchie, strumenti con SIMD complessi) possono fallire. QEMU è il piano B.
Si può far girare Kubernetes su un Mac M3 senza problemi? Sì, ma è meglio con minikube o k3d che con il Kubernetes integrato di Docker Desktop. Entrambi sono più leggeri. Se ti serve un ambiente completo con Windows e Linux insieme, potrebbe interessarti dare un’occhiata a come installare Windows 11 ARM su un Mac M3 con Parallels Desktop 20.
Quanta RAM serve davvero per lavorare comodamente con Docker? 16 GB è il minimo accettabile. 24 GB o più se il tuo stack include contemporaneamente database, backend, frontend e qualche servizio ausiliario. Se stai pensando di cambiare computer, dai un’occhiata al confronto tra MacBook Pro M4 Pro e M4 Max prima di decidere.



