GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come distribuire e gestire un contenitore Docker MongoDB

MongoDB è un popolare database di documenti open source che offre prestazioni elevate e grande flessibilità. Ma hai provato a containerizzare un database MongoDB per i tuoi progetti? In caso contrario, allora sei pronto per una sorpresa!

In questo tutorial imparerai come distribuire, proteggere e gestire MongoDB in modo efficace con Docker. Quindi continua a leggere e diventa il tuo maestro nella distribuzione dei container Docker MongoDB!

Prerequisiti

Questo tutorial comprende dimostrazioni pratiche. Per seguire, assicurati di avere quanto segue:

  • Una macchina Ubuntu – Questo tutorial utilizza Ubuntu 20.04 LTS
  • Un utente con sudo permesso
  • Docker:questo tutorial utilizza Docker 20.10.9

Download dell'immagine Docker MongoDB

Prima di poter distribuire e gestire un container Docker MongoDB, devi prima scaricare un'immagine MongoDB dal Docker Hub in modo da poter eseguire il container MongoDB localmente.

Esegui la docker comando seguente per scaricare l'immagine MongoDB Community Edition(CE) (pull mongo ), che Docker Hub sta ospitando. L'ultima versione di questa immagine al momento della scrittura è 4.2.

sudo docker pull mongo

Come puoi vedere di seguito, il comando estrae automaticamente l'ultima versione dell'immagine e la tagga come ultima .

Ora esegui le docker images comando qui sotto per elencare tutte le immagini disponibili sul tuo server.

sudo docker images

Di seguito, puoi vedere l'immagine MongoDB contrassegnata come ultima .

Distribuzione di un contenitore Docker MongoDB

Dall'immagine MongoDB che hai scaricato, ora puoi distribuire un contenitore MongoDB. Inizializzerai il tuo contenitore MongoDB con l'eseguibile mongo, creerai una directory di dati. Definirai quindi la mappatura tra l'area dati del contenitore Docker e la macchina host.

1. Esegui mkdir comando seguente per creare una directory di dati denominata mongodata per memorizzare il database e i log di MongoDB.

sudo mkdir -p /mongodata

2. Quindi, esegui docker run comando seguente per creare un contenitore con il nome mymongo . Inoltre, il contenitore viene avviato con uno pseudo-TTY interattivo (-it ), nel caso in cui l'output debba essere visualizzato all'avvio del contenitore.

Infine, la directory appena creata mongodata è legato (-v ) nella directory interna, /data/db . Il -d l'opzione avvia il contenitore in modalità scollegata, quindi viene eseguito come processo in background e restituisce l'output della console al momento della creazione.

Il sistema crea automaticamente /data/db directory quando esegui il contenitore per archiviare i dati delle modifiche apportate nel contenitore. Questa directory viene eseguita in una modalità simile a quella di sola lettura e consente l'archiviazione permanente dei dati sul sistema host.

sudo docker run -it -v mongodata:/data/db --name mymongo -d mongo

Una volta che il comando è stato completato correttamente, vedrai un output come quello qui sotto.

3. Infine, esegui il docker ps comando seguente per identificare l'ID del contenitore e verificarne lo stato. La docker ps il comando mostra tutte le informazioni sul container attualmente in esecuzione.

Il docker ps il comando è paragonabile al normale ps comando in Linux.

sudo docker ps

Nell'output mostrato di seguito, puoi vedere un Porte sezione che elenca tutte le porte assegnate al container per l'ascolto delle connessioni in entrata.

In questo esempio, porta 27017 è mappato sull'host. L'output seguente indica che puoi accedere all'istanza MongoDB su questo contenitore tramite localhost:27017 dall'ospite.

Forse vuoi vedere il file di log di mymongo container per determinare cosa è successo sul tuo database/istanza mongo quando qualcosa è andato storto. In tal caso, esegui i docker logs comando, come questo:sudo docker logs docker-container . Sostituisci docker-container con il nome del tuo container Docker.

Collegamento del contenitore Docker MongoDB a Bash Shell

Hai appena distribuito un container Docker MongoDB, ma come lo gestisci? Fallo collegando il contenitore Docker alla shell Bash con docker exec prima il comando.

Collegare il tuo contenitore alla shell Bash è fondamentale poiché il contenitore è attualmente in esecuzione in modalità scollegata (in esecuzione in background). E se il contenitore viene eseguito in background, il contenitore non riceverà alcun input né visualizzerà l'output.

Esegui docker exec comando seguente per allegare il tuo contenitore (mymongo ) alla shell Bash.

sudo docker exec -it mymongo bash

Al termine del comando, il tuo prompt cambierà in qualcosa di simile a quello seguente. Il numero alfanumerico univoco (77782fa95314 ) è l'ID del contenitore.

Gli ID contenitore sono essenziali per evitare conflitti di denominazione e identificare efficacemente i contenitori tra host, quindi cerca di non cambiarli.

Ora esegui mongo comando senza argomenti per accedere alla shell MongoDB nel contenitore (mymongo). La shell MongoDB è dove esegui le tue query/comandi mongo.

Una volta che sei nel contenitore, puoi eseguire qualsiasi comando senza sudo prefisso poiché ora sei un utente root all'interno del contenitore. Ogni modifica che apporti al contenitore non influirà sul tuo sistema host.

mongo

Osservando il prompt mostrato di seguito, puoi dire che ora sei nella shell di MongoDB.

Se preferisci vedere tutti i comandi disponibili nella shell di MongoDB, esegui la help comando, come mostrato di seguito.

Creazione di un utente MongoDB amministrativo

Dopo aver distribuito un server MongoDB all'interno di un container Docker, creerai un utente MongoDB amministrativo. Un utente amministrativo ti consente di connetterti al server MongoDB e gestire i database.

1. Accedi nuovamente alla shell di MongoDB ed esegui use comando seguente per passare prima all'admin Banca dati. In questo modo l'utente amministrativo dispone delle autorizzazioni corrette per gestire i database.

use admin

Copia e incolla il codice seguente nel prompt di MongoDB per creare un utente amministrativo.

Il codice seguente utilizza db.createUser() metodo per creare un utente con ruoli amministrativi. Il nome utente (user ) e password (pwd ) di seguito sono hardcoded, che puoi modificare in base alle tue preferenze.

# Create an administrative user
db.createUser(
{
	# Sets the username for the administrative user
	user: "ata",
	# Sets the password for the administrative user
	pwd: "password123",
	# Sets the roles for the administrative user
	roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

Se il codice funziona, riceverai un messaggio come quello qui sotto nel prompt di MongoDB.

3. Esegui quit() query di seguito per uscire dalla shell MongoDB.

quit()

4. Infine, esegui il seguente mongo comando per testare l'utente amministrativo che hai creato (ata ) collegandosi al server MongoDB. Immettere la password per l'utente amministrativo quando richiesto.

mongo -u ata -p --authenticationDatabase admin

Come puoi vedere di seguito, il server MongoDB stampa la versione del server MongoDB se ti connetti al server con successo.

Forse vuoi testare ulteriormente l'utente amministrativo. In tal caso, esegui i comandi seguenti per mostrare tutti gli utenti nel database.

use admin
show users

Di seguito, puoi vedere che l'utente amministrativo che hai creato è nell'elenco.

Creazione di un database MongoDB

La gestione di un container Docker MongoDB non sarebbe completa senza la creazione di un database. Creerai un nuovo database MongoDB in cui memorizzerai i dati tramite la shell MongoDB.

1. Da una sessione interattiva all'interno del contenitore Docker, esegui show dbs comando seguente per elencare tutti i database nel tuo server.

show dbs

Di seguito puoi vedere un database di amministrazione, un database di configurazione e un database locale. La shell MongoDB crea questi database per impostazione predefinita in ogni server MongoDB.

2. Quindi, esegui use comando seguente per creare un nuovo database. Sostituisci <database_name> con il nome del database di tua scelta. Ma per questo esempio, il database si chiama linux .

Il use query cambia il database corrente in quello specificato se esiste. In caso contrario, use query crea un nuovo database e vi passa automaticamente.

use <database_name>

3. Riesegui show dbs comando come hai fatto in precedenza (passaggio uno) per vedere se il database che hai creato esiste.

show dbs

Non vedi ancora il database appena creato (linux) nell'elenco? MongoDB costruisce il database solo quando memorizzi i dati al suo interno per la prima volta. I dati possono assumere la forma di una raccolta o anche di un documento.

4. Ora copia/incolla il codice seguente nella shell di MongoDB e premi Invio .

Il codice seguente crea una nuova raccolta denominata linux_version , che puoi cambiare con il nome che preferisci. La raccolta contiene dati nel formato coppia chiave:valore.

# Using insertOne method to insert data
db.linux_version.insertOne(
	# Key:value pairs to insert to the database
	{ "debian" : "11",
	"ubuntu" : "20.04",
	"rocky linux" : "8.4",
	"alma linux" : "8"
	}
)

Nell'output di seguito, puoi vedere la linux_version raccolta viene creata e viene fornita con un ObjectID .

5. Esegui show collections comando per vedere un elenco di raccolte e vedere se la nuova raccolta linux_version esiste.

show collections

Di seguito puoi vedere che hai creato con successo la versione_linux collezione.

6. Infine, esegui il comando seguente per visualizzare e confermare i dati che hai inserito in linux_version la raccolta è corretta. Il metodo pretty() ti consente di visualizzare i dati in un formato leggibile dall'uomo.

db.linux_version.find().pretty()

Se dovessi modificare i dati nel database, usa Update() metodo.

Puoi vedere che l'output di seguito è in un formato molto leggibile.

Riavvio del contenitore Docker MongoDB

A questo punto, hai un contenitore Docker MongoDB in esecuzione correttamente. Ma cosa succede se il contenitore non serve più o se non funziona? Un paio di comandi Docker possono aiutare a fermare, riavviare e persino rimuovere un container Docker MongoDB.

1. Esegui docker ps comando seguente per elencare tutti i contenitori in esecuzione.

sudo docker ps

Prendi nota del nome e dell'ID del contenitore che desideri interrompere, riavviare o rimuovere, come mostrato di seguito.

2. Quindi, esegui uno dei docker stop comandi seguenti per arrestare un contenitore MongoDB in esecuzione.

sudo docker stop mymongo
sudo docker stop container-ID

3. Eseguire nuovamente il docker ps comando come hai fatto in precedenza (passaggio uno) per verificare se il contenitore è stato chiuso.

sudo docker ps

Come puoi vedere di seguito, il contenitore non è nell'elenco dei contenitori in esecuzione, il che indica che hai arrestato correttamente il contenitore.

4. Ora esegui uno dei docker start comandi seguenti se si decide di riavviare un container.

sudo docker start mymongo
sudo docker start container-ID

5. Infine, riesegui la docker ps comando per vedere se il contenitore è in esecuzione.

sudo docker ps

Forse non hai più bisogno di un contenitore. In tal caso, devi prima arrestare il contenitore ed eseguire rm comando per rimuovere un contenitore, come questo:sudo docker container rm mongodb . Simile agli esempi precedenti, sostituisci mongodb con il nome del contenitore o l'ID contenitore.

Conclusione

In questo tutorial, hai imparato come distribuire e gestire un container Docker MongoDB creando un utente amministratore per creare un database e archiviarvi i dati. Ti sei reso conto che puoi interrompere, riavviare e rimuovere i contenitori che non ti servono più per mantenere pulite le tue immagini Docker.

La distribuzione e la gestione di MongoDB con Docker è il primo passo per sfruttare la tecnologia di containerizzazione e ridurre l'overhead. Perché non utilizzare questo primo passaggio per esplorare di più MongoDB e vedere come un container Docker MongoDB può aiutare con i tuoi progetti?


Docker
  1. Come distribuire un container nginx con Docker su Linode

  2. Come installare Docker e distribuire uno stack LAMP

  3. Come creare un'immagine Docker da un contenitore e un file Docker

  4. Come eseguire il backup e il ripristino dei container Docker

  5. Come mettere in pausa e riprendere i contenitori Docker

Come eseguire SSH in un contenitore Docker ed eseguire comandi

Come installare e configurare Docker Container su AlmaLinux 8

Come distribuire un container Docker in AWS Elastic Beanstalk

Come copiare file tra host e contenitore Docker

Come gestire i container Docker

Come distribuire il container Docker su Jelastic Cloud