Come eseguire MySQL nel contenitore Docker: una guida semplice e facile da seguire
Questa guida passo passo spiega come configurare un nuovo server MySQL in esecuzione nel contenitore Docker in pochi minuti.
Uno degli aspetti positivi di Docker è la possibilità di utilizzarlo rapidamente per provare le applicazioni senza installarlo direttamente sul tuo computer. Ad esempio, puoi utilizzare Docker per eseguire un database in un contenitore come server remoto e testare il modo in cui la tua applicazione interagisce con esso.
L'esecuzione di MySQL con contenitori Docker è un meccanismo ampiamente utilizzato. MySQL è uno dei database più popolari utilizzati con i contenitori Docker.
Naturalmente, sul computer host dovrebbe essere installato Docker per creare MySQL come contenitore Docker. Quindi, se non l'hai installato, ecco alcune guide che ti saranno molto utili:
- Come installare Docker Engine su Ubuntu: una guida passo passo
- Come installare Docker su AlmaLinux/Rocky Linux
1. Estrai l'immagine Docker MySQL
La prima cosa che devi fare per creare e testare il server MySQL in Docker è estrarre un'immagine ufficiale MySQL dal Docker Hub.
Puoi scaricare una versione specifica, come 8.0, 5.7 o 5.6, oppure optare per la versione più recente come mostrato nel seguente comando:
sudo docker pull mysql:latest
Se desideri una versione particolare di MySQL, sostituisci più recente
con il numero di versione.
Puoi eseguire il comando docker images
per visualizzare un elenco di immagini Docker che hai estratto da Docker Hub.
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 2fe463762680 13 hours ago 514MB
Come puoi vedere, l'immagine MySQL è ora disponibile per il nostro Docker installato localmente.
2. Configurazione di un volume Docker
Come sapete, i contenitori Docker sono, in linea di principio, temporanei e si prevede che eventuali dati o configurazione andranno persi se il contenitore viene eliminato.
I volumi Docker, tuttavia, forniscono un meccanismo per rendere persistenti i dati creati all'interno di un contenitore Docker. Pertanto, sono il meccanismo preferito da Docker per archiviare i dati persistenti dei contenitori Docker.
MySQL memorizza i suoi file di dati nella directory /var/lib/mysql
. Pertanto, prima della distribuzione, dovrai configurare un volume Docker per rendere persistente il tuo database. In caso contrario, i tuoi dati andranno persi al riavvio del contenitore.
Creiamo un nuovo volume e chiamiamolo mysql-data
. Verrà utilizzato per archiviare tutte le informazioni del database.
sudo docker volume create mysql-data
Puoi elencare tutti i volumi conosciuti da Docker emettendo il comando seguente:
sudo docker volume ls
DRIVER VOLUME NAME
local mysql-data
Come puoi vedere, il nostro volume Docker appena creato denominato mysql-data
è qui e pronto per servire i dati. Può quindi essere collegato a un contenitore MySQL appena creato.
3. Esegui un contenitore Docker MySQL
Ora che hai un'immagine MySQL Docker sul tuo computer e un volume per rendere persistenti i dati, puoi distribuire un contenitore. È inoltre necessario impostare una password per l'utente root MySQL utilizzando la variabile di ambiente MYSQL_ROOT_PASSWORD
.
Ora eseguiamo il contenitore:
sudo docker run -d --name=mysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password mysql
Questo è tutto. Ciò avvierà l'ultima versione dell'istanza MySQL, che può essere accessibile in remoto da qualsiasi luogo con la password root specificata.
Per rendere le cose più trasparenti, analizziamo questa sintassi. Innanzitutto, ecco cosa significa ciascun parametro in quel comando:
-d
eseguirà questo contenitore in modalità separata in background.--name
assegna il nomemysql-server
alla tua istanza di contenitore. Se non lo specifichi, Docker genererà un nome casuale.-p
associa la porta del contenitore MySQL3306
alla stessa porta sul tuo computer host. Potrai connetterti a127.0.0.1
sulla porta3306
utilizzando client MySQL (mysql
) in esecuzione sul tuo host.- L'opzione
-v
associa la cartella di dati all'interno del volume contenitore (/var/lib/mysql
) al volume Docker locale (mysql-data
) hai creato nel passaggio precedente. -e
imposta una variabile di ambiente. In questo caso, la password root di MySQL.mysql
è il nome dell'immagine che utilizziamo per creare il contenitore.
Puoi verificare se il contenitore è in esecuzione elencando i contenitori in esecuzione:
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fc229e3df77 mysql "docker-entrypoint.s…" 37 minutes ago Up 34 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql-server
Correlato: MySQL: come eseguire il backup (dump) e ripristinare il database utilizzando mysqldump
4. Connessione al contenitore MySQL
Puoi ottenere una shell MySQL interattiva collegandola al contenitore ed eseguendo il comando mysql
. Ciò fornisce l'interfaccia completa della riga di comando MySQL per utilizzare tutti i comandi e i flag familiari.
sudo docker exec -it mysql-server mysql -u root -p
Correlato: Come creare un database in MySQL utilizzando la riga di comando
Puoi anche connetterti all'istanza MySQL Docker utilizzando il client mysql
se lo hai preinstallato sul tuo host.
Tieni presente che, per impostazione predefinita, il client mysql tenta di connettersi utilizzando un socket UNIX quando gli dici di connettersi a localhost
. Quindi utilizza 127.0.0.1
e non localhost
.
mysql -u root -h 127.0.0.1 -p
Naturalmente, puoi anche utilizzare un client basato su GUI come MySQL Workbench per connetterti al database. Ad esempio, nel tuo MySQL Workbench per "Nome host", specifica l'indirizzo IP della macchina su cui hai avviato il contenitore Docker.
Correlato: Come creare un database in MySQL con MySQL Workbench
Naturalmente, negli esempi mostrati sopra per un nome host, è possibile utilizzare l'indirizzo IP della macchina su cui funziona il contenitore docker MySQL invece di 127.0.0.1.
Puoi trovare questo indirizzo eseguendo il comando ifconfig
senza argomenti. L'indirizzo IP della macchina consente di accedere al server MySQL da remoto.
5. Arresta, avvia e riavvia il contenitore MySQL
Questo comando interromperà temporaneamente il contenitore MySQL in esecuzione (e potrà essere ripreso/riavviato in seguito):
sudo docker stop mysql-server
Per avviare il contenitore MySQL, esegui:
sudo docker start mysql-server
Il comando seguente viene utilizzato per riavviare il contenitore MySQL in esecuzione:
sudo docker restart mysql-server
Conclusione
Come puoi vedere, eseguire MySQL all'interno di Docker è molto più rapido e semplice rispetto all'installazione di MySQL Server localmente. Tuttavia, ci sono molte altre cose da considerare se usi MySQL su Docker per scopi che vanno oltre i test.
Per ulteriori informazioni, puoi consultare la pagina MySQL su Docker Hub e il manuale ufficiale MySQL sull'argomento.
Fammi sapere se hai domande o suggerimenti. Sarò felice di ricontattarti.