Eseguire MongoDB in Docker: guida completa con esempi
Questa guida ti accompagna nell'esecuzione di MongoDB in Docker, coprendo sia i deployment rapidi da riga di comando sia le configurazioni complete con Docker Compose. È perfetta per chi vuole fare self-hosting o sperimentare in locale senza passare subito al cloud hosting.
Quindi vuoi effettuare il self-hosting di MongoDB o iniziare a sperimentarlo in locale? Hai diverse opzioni per iniziare se non vuoi saltare subito su MongoDB Atlas, una delle quali è usare i container con Docker.
Usare Docker è un'ottima scelta per gestire la tua istanza MongoDB perché richiede meno di un minuto per configurarla ed è facile da mantenere o spostare tra computer host.
In questo articolo vedremo alcuni approcci per distribuire MongoDB con Docker ed esploreremo diversi suggerimenti e trucchi lungo il percorso. Puoi anche dare un'occhiata a questo video per una panoramica rapida dell'argomento.
Prerequisiti
Per seguire questo tutorial, devi avere installato Docker Engine sul tuo computer. Può essere su macOS, Windows o Linux. Non è strettamente necessario installare Docker Desktop, ma potrebbe semplificarti l'esperienza con Docker a seconda del sistema operativo che stai usando.
Per esempio, io sto usando Docker Engine tramite Rancher Desktop su macOS e funziona bene.
Prima di poter eseguire MongoDB in un container Docker, devi innanzitutto scaricare un'immagine adatta alle tue esigenze. Dalla riga di comando, esegui quanto segue:
docker pull mongodb/mongodb-community-server:latestOfferto da
Il comando sopra scaricherà l'immagine ufficiale di MongoDB Community Edition (CE) con il tag "latest".
Una volta scaricata un'immagine, possiamo valutare le opzioni di deployment.
Eseguire MongoDB come container isolato con il comando Docker Run
Il modo più rapido per distribuire MongoDB con Docker è usare semplicemente il comando docker run con alcuni parametri di configurazione. Per esempio, puoi eseguire il seguente comando dalla riga di comando:
docker run -d-p27017:27017 -eMONGO_INITDB_ROOT_USERNAME=nraboy -eMONGO_INITDB_ROOT_PASSWORD=password1234 --name mongodb mongodb/mongodb-community-server:latestOfferto da
Il comando precedente prenderà la nostra immagine e la distribuirà come un container chiamato "MongoDB". Il container sarà mappato sulle porte, il che significa che l'host potrà interagire con esso sulla porta "27017". In questo esempio sono anche impostate le informazioni di autenticazione per l'utente root, ma a seconda delle tue esigenze di deployment, puoi usare Docker Secrets o un altro metodo protetto per passare informazioni sensibili.
Nell'esempio precedente, tutti i dati sono archiviati all'interno del container. I dati di MongoDB, che includono database, collection e persino documenti, persisteranno solo finché esiste quel particolare container. Può andare bene per i test, ma spesso vorrai una persistenza affidabile dei dati di MongoDB in Docker. Per gestire questo aspetto, dovresti creare un volume Docker usando il seguente comando:
Per dire al tuo container di usare quel volume, puoi modificare il comando di deployment in qualcosa di simile al seguente:
docker run -d-p27017:27017 -eMONGO_INITDB_ROOT_USERNAME=nraboy -eMONGO_INITDB_ROOT_PASSWORD=password1234 -v mongodb:/data/db --name mongodb mongodb/mongodb-community-server:latestOfferto da
Nota che questa volta stiamo specificando il volume da usare. Quando utilizzi un volume, puoi essere sicuro che i tuoi dati esisteranno anche dopo l'interruzione o l'aggiornamento del container.
Con MongoDB in esecuzione all'interno di un container Docker, puoi connetterti usando mongodb://nraboy:password1234@localhost:27017 come stringa di connessione dallo strumento che preferisci.
Includere MongoDB nel tuo stack o progetto con Docker Compose
Se prevedi di usare MongoDB con un progetto specifico, anch'esso gestito con Docker, probabilmente ha senso gestire MongoDB con una configurazione Docker Compose. Queste configurazioni sono spesso usate per isolare i tuoi progetti, spesso chiamati stack.
Crea un file docker-compose.yml da qualche parte sul tuo computer con il seguente contenuto:
La configurazione sopra usa informazioni che abbiamo già visto nel singolo comando da riga di comando. Come con l'altro metodo, qui si dà per scontato che tu abbia già creato un volume mongodb da far gestire a Docker. Ancora una volta, se devi farlo, esegui il seguente comando:
Il comando sopra avvia lo stack in modalità detached.
Puoi verificare che tutto funzioni provando a connetterti alla tua istanza con uno strumento come MongoDB Compass, uno dei driver di linguaggio come Node.js o tramite la MongoDB Shell.
Se hai seguito l'esempio alla lettera, la tua stringa di connessione sarà mongodb://nraboy:password1234@localhost:27017, ma a seconda di come hai proceduto potrebbe essere diversa.
Per arrestare la tua istanza MongoDB, esegui il seguente comando dalla riga di comando con la configurazione YAML nella stessa directory di lavoro:
Poiché stiamo usando un volume esterno, la prossima volta che avvierai il container, tutto sarà ancora persistito.
Conclusione
Docker rende semplice lavorare con MongoDB in un ambiente self-hosted o locale. Non devi preoccuparti delle configurazioni del sistema operativo in generale o delle differenze di esperienza tra un computer e un altro. Otterrai un'esperienza coerente ogni volta.
Posso eseguire più container MongoDB contemporaneamente con Docker?⌄
Sì, puoi eseguire più container MongoDB purché ciascuno esegua il mapping a una porta diversa o giri su una rete Docker separata per evitare conflitti.
Come eseguo il backup dei dati di un container MongoDB in Docker?⌄
Per eseguire il backup dei dati, puoi usare docker cp per estrarre i file dal volume oppure usare mongodump all'interno del container. I volumi persistenti aiutano anche a mantenere i dati tra una sessione e l'altra.
È sicuro salvare le password di MongoDB nel file Docker Compose?⌄
Non è l'ideale. Meglio usare Docker Secrets o file di variabili d'ambiente (.env) esclusi dal controllo di versione per gestire in modo sicuro le credenziali sensibili.
MongoDB funziona bene in Docker su Windows?⌄
Sì, MongoDB funziona senza problemi in Docker su Windows, macOS e Linux, specialmente usando WSL 2 o Docker Desktop per Windows per garantire la compatibilità.
Posso usare MongoDB con Docker in produzione?⌄
Sì, ma è consigliabile configurare correttamente rete, volumi di storage, autenticazione e backup prima di usare MongoDB containerizzato in produzione.
Come mi connetto a MongoDB in Docker da un altro container?⌄
Usa Docker Compose e fai riferimento al container MongoDB con il nome del servizio come hostname. Questo abilita la comunicazione service-to-service sulla stessa rete.
Devo installare MongoDB in locale se uso Docker?⌄
No. Docker esegue MongoDB in un ambiente containerizzato, quindi non devi installare MongoDB direttamente sulla macchina host.
Posso usare MongoDB Compass con un'istanza MongoDB in Docker?⌄
Assolutamente. Ti basta usare la stringa di connessione corretta (ad es., mongodb://user:pass@localhost:27017) per collegarti da MongoDB Compass al tuo container locale.
Come monitoro le prestazioni di MongoDB in Docker?⌄
Puoi integrare strumenti come mongostat, mongotop o soluzioni di monitoraggio esterne come Prometheus e Grafana per tracciare le prestazioni all'interno di Docker.
I miei dati MongoDB persisteranno in un container Docker?⌄
Finché hai scelto di mappare la directory del container a un volume sulla macchina host, i dati dovrebbero persistere senza problemi tra aggiornamenti e riavvii.
Dovrei usare Docker o MongoDB Atlas?⌄
Nella maggior parte degli scenari è meglio usare MongoDB Atlas per le funzionalità disponibili, i costi e la facilità d'uso, ma MongoDB tramite Docker è comunque un'opzione valida.
Devo usare Docker Desktop con MongoDB?⌄
Docker Desktop semplifica il lavoro con Docker nella maggior parte dei casi, ma non è un requisito. La maggior parte delle distribuzioni Linux include Docker Engine e funzionano anche altre interfacce come Rancher Desktop.
Autore
Nic Raboy
Nic Raboy è un Responsabile Developer Relations presso MongoDB, dove guida un team di sviluppatori Python, Java, C# e PHP che creano contenuti straordinari per aiutare gli sviluppatori a integrare con successo MongoDB nei loro progetti. Ha esperienza con Golang e JavaScript e spesso scrive delle sue molte avventure nello sviluppo.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Quindi vuoi effettuare il self-hosting di MongoDB o iniziare a sperimentarlo in locale? Hai diverse opzioni per iniziare se non vuoi saltare subito su MongoDB Atlas, una delle quali è usare i container con Docker.
Usare Docker è un'ottima scelta per gestire la tua istanza MongoDB perché richiede meno di un minuto per configurarla ed è facile da mantenere o spostare tra computer host.
In questo articolo vedremo alcuni approcci per distribuire MongoDB con Docker ed esploreremo diversi suggerimenti e trucchi lungo il percorso. Puoi anche dare un'occhiata a questo video per una panoramica rapida dell'argomento.
Prerequisiti
Per seguire questo tutorial, devi avere installato Docker Engine sul tuo computer. Può essere su macOS, Windows o Linux. Non è strettamente necessario installare Docker Desktop, ma potrebbe semplificarti l'esperienza con Docker a seconda del sistema operativo che stai usando.
Per esempio, io sto usando Docker Engine tramite Rancher Desktop su macOS e funziona bene.
Per ripassare le tue competenze su Docker, vale la pena dare un'occhiata a Docker for Beginners: A Practical Guide to Containers per recuperare le basi.
Scaricare un'immagine Docker di MongoDB
Prima di poter eseguire MongoDB in un container Docker, devi innanzitutto scaricare un'immagine adatta alle tue esigenze. Dalla riga di comando, esegui quanto segue:
Il comando sopra scaricherà l'immagine ufficiale di MongoDB Community Edition (CE) con il tag "latest".
È importante notare che mongodb/mongodb-community-server e mongodb/mongodb-enterprise-server sono immagini Docker ufficiali mantenute da MongoDB. Tutte le altre immagini sono mantenute dalla community esterna e potrebbero dare risultati diversi o inattesi.
Una volta scaricata un'immagine, possiamo valutare le opzioni di deployment.
Eseguire MongoDB come container isolato con il comando Docker Run
Il modo più rapido per distribuire MongoDB con Docker è usare semplicemente il comando
docker runcon alcuni parametri di configurazione. Per esempio, puoi eseguire il seguente comando dalla riga di comando:Il comando precedente prenderà la nostra immagine e la distribuirà come un container chiamato "MongoDB". Il container sarà mappato sulle porte, il che significa che l'host potrà interagire con esso sulla porta "27017". In questo esempio sono anche impostate le informazioni di autenticazione per l'utente root, ma a seconda delle tue esigenze di deployment, puoi usare Docker Secrets o un altro metodo protetto per passare informazioni sensibili.
Nell'esempio precedente, tutti i dati sono archiviati all'interno del container. I dati di MongoDB, che includono database, collection e persino documenti, persisteranno solo finché esiste quel particolare container. Può andare bene per i test, ma spesso vorrai una persistenza affidabile dei dati di MongoDB in Docker. Per gestire questo aspetto, dovresti creare un volume Docker usando il seguente comando:
Per dire al tuo container di usare quel volume, puoi modificare il comando di deployment in qualcosa di simile al seguente:
Nota che questa volta stiamo specificando il volume da usare. Quando utilizzi un volume, puoi essere sicuro che i tuoi dati esisteranno anche dopo l'interruzione o l'aggiornamento del container.
Con MongoDB in esecuzione all'interno di un container Docker, puoi connetterti usando
mongodb://nraboy:password1234@localhost:27017come stringa di connessione dallo strumento che preferisci.Includere MongoDB nel tuo stack o progetto con Docker Compose
Se prevedi di usare MongoDB con un progetto specifico, anch'esso gestito con Docker, probabilmente ha senso gestire MongoDB con una configurazione Docker Compose. Queste configurazioni sono spesso usate per isolare i tuoi progetti, spesso chiamati stack.
Crea un file
docker-compose.ymlda qualche parte sul tuo computer con il seguente contenuto:La configurazione sopra usa informazioni che abbiamo già visto nel singolo comando da riga di comando. Come con l'altro metodo, qui si dà per scontato che tu abbia già creato un volume
mongodbda far gestire a Docker. Ancora una volta, se devi farlo, esegui il seguente comando:Ovviamente puoi gestire i tuoi volumi Docker come ritieni più opportuno. Creare un volume è solo una delle diverse possibilità.
Con la riga di comando impostata sulla stessa directory di lavoro del tuo file
docker-compose.yml, esegui il seguente comando:Il comando sopra avvia lo stack in modalità detached.
Puoi verificare che tutto funzioni provando a connetterti alla tua istanza con uno strumento come MongoDB Compass, uno dei driver di linguaggio come Node.js o tramite la MongoDB Shell.
Se hai seguito l'esempio alla lettera, la tua stringa di connessione sarà
mongodb://nraboy:password1234@localhost:27017, ma a seconda di come hai proceduto potrebbe essere diversa.Per arrestare la tua istanza MongoDB, esegui il seguente comando dalla riga di comando con la configurazione YAML nella stessa directory di lavoro:
Poiché stiamo usando un volume esterno, la prossima volta che avvierai il container, tutto sarà ancora persistito.
Conclusione
Docker rende semplice lavorare con MongoDB in un ambiente self-hosted o locale. Non devi preoccuparti delle configurazioni del sistema operativo in generale o delle differenze di esperienza tra un computer e un altro. Otterrai un'esperienza coerente ogni volta.
Per fare un passo in più, vale la pena imparare come creare un database in MongoDB.