Introduzione
MySQL è un noto sistema di gestione di database relazionali open source e una delle soluzioni di server web più popolari. Memorizza e struttura i dati in modo significativo, garantendo una facile accessibilità.
Docker è un insieme di prodotti platform-as-a-service che supportano lo sviluppo CI/CD. Consente agli utenti di sviluppare e distribuire applicazioni all'interno di ambienti virtuali, chiamati container. Con una singola immagine, Docker può avviare un'applicazione con tutte le sue librerie e dipendenze.
In questo tutorial, scopri come distribuire un container MySQL Docker e inizia a lavorare con il database containerizzato.
Prerequisiti
- Accesso a una riga di comando/finestra del terminale
- Un account utente con sudo privilegi o accesso alla root conto
- Un'installazione Docker esistente
Esecuzione di un MySQL Docker Container
Se devi configurare un database in modo rapido e senza utilizzare troppe risorse, implementa MySQL in un container è una soluzione rapida ed efficiente. Questo è appropriato solo per applicazioni di piccole e medie dimensioni. Le applicazioni di livello aziendale non troverebbero un contenitore MySQL Docker sufficiente per il loro carico di lavoro.
L'utilizzo del software Docker per la configurazione del database sta diventando sempre più popolare per le app su piccola scala. Invece di avere un server separato per l'hosting di database, puoi distribuire un contenitore di database MySQL.
Più contenitori possono essere eseguiti sul tuo computer. I contenitori condividono lo stesso kernel e le stesse librerie dell'host mentre impacchettano l'applicazione o il software distribuito in singole unità. Ciò rende il database straordinariamente leggero e veloce da avviare.
Installazione di un contenitore Docker MySQL
La configurazione di un database in Docker consiste semplicemente nella creazione di un contenitore basato su un'immagine MySQL. Segui i passaggi descritti di seguito per rendere operativo il tuo container MySQL.
Passaggio 1:estrai l'immagine Docker MySQL
1. Inizia tirando l'immagine Docker appropriata per MySQL. Puoi scaricare una versione specifica o optare per l'ultima versione come mostrato nel comando seguente:
sudo docker pull mysql/mysql-server:latest
Se desideri una versione particolare di MySQL, sostituisci latest
con il numero di versione.
2. Verifica che l'immagine sia ora archiviata localmente elencando le immagini Docker scaricate:
sudo docker images
L'output dovrebbe includere mysql/mysql-server
tra le immagini elencate.
Fase 2:distribuisci il contenitore MySQL
1. Una volta ottenuta l'immagine, passa alla distribuzione di un nuovo contenitore MySQL con:
sudo docker run --name=[container_name] -d [image_tag_name]
- Sostituisci
[container_name]
con il nome che preferisci. Se non fornisci un nome, Docker ne genera uno casuale. - Il
-d
l'opzione indica a Docker di eseguire il contenitore come servizio in background. - Sostituisci
[image_tag_name]
con il nome dell'immagine scaricata al passaggio 1.
In questo esempio, creiamo un contenitore denominato mysql_docker
con le latest
tag della versione:
sudo docker run --name=[container_name] -d mysql/mysql-server:latest
2. Quindi, controlla se il contenitore MySQL è in esecuzione:
docker ps
Dovresti vedere il contenitore appena creato elencato nell'output. Include i dettagli del contenitore, uno dei quali è lo stato di questo ambiente virtuale. Lo stato cambia da health: starting
a healthy
, una volta completata la configurazione.
Fase 3:connettiti al MySQL Docker Container
1. Prima di poter connettere il container del server MySQL all'host, devi assicurarti che il pacchetto client MySQL sia installato:
apt-get install mysql-client
2. Quindi, apri il file di log del contenitore MySQL per trovare la password di root generata:
sudo docker logs [container_name]
Per il mysql_docker
container, eseguiamo:
sudo docker logs mysql_docker
3. Scorri l'output e trova la riga [Entrypoint] GENERATED ROOT PASSWORD
:, copia e incolla la password in un blocco note o in un editor di testo in modo da poterla utilizzare in seguito.
4. Quindi, vai alla shell bash del contenitore MySQL digitando:
sudo docker exec -it [container_name] bash
Per il contenitore creato come esempio, eseguiamo:
sudo docker -it mysql_docker bash
3. Fornire la password di root copiata dal file di registro, quando richiesto. Con ciò, hai collegato il client MySQL al server.
4. Infine, cambia la password di root del server per proteggere le tue informazioni:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[newpassword]';
Sostituisci [newpassword]
con una password complessa a tua scelta.
Configura il contenitore MySQL
Quando installi un container MySQL, troverai le sue opzioni di configurazione in /etc/mysql/my.cnf=
directory.
Se devi modificare la configurazione, crea un file di configurazione alternativo sulla macchina host e montalo all'interno del container.
1. Innanzitutto, crea una nuova directory sulla macchina host:
sudo mkdir -p /root/docker/[container_name]/conf.d
2. Crea un file di configurazione MySQL personalizzato all'interno di quella directory:
sudo nano /root/docker/[container_name]/conf.d/my-custom.cnf
3. Una volta nel file, puoi aggiungere righe con la configurazione desiderata.
Ad esempio, se vuoi aumentare il numero massimo di connessioni a 250 (anziché 151 di default), aggiungi le seguenti righe al file di configurazione:
[mysqld]
max_connections=250
4. Salva ed esci dal file.
5. Affinché le modifiche avvengano, è necessario rimuovere ed eseguire nuovamente il contenitore MySQL . Questa volta, il contenitore utilizza una combinazione di impostazioni di configurazione dal file appena creato e dai file di configurazione predefiniti.
Per fare ciò, esegui il container e mappa il percorso del volume con il comando:
docker run \
--detach \
--name=[container_name] \
--env="MYSQL_ROOT_PASSWORD=[my_password]" \
--publish 6603:3306 \
--volume=/root/docker/[container_name]/conf.d:/etc/mysql/conf.d \
mysql
6. Per verificare se il contenitore ha caricato la configurazione dall'host, eseguire il comando seguente:
mysql -uroot -pmypassword -h127.0.0.1 -P6603 -e 'show global variables like "max_connections"';
Dovresti vedere che il numero massimo di connessioni ora è 250
.
Gestisci l'archiviazione dei dati
Per impostazione predefinita, Docker archivia i dati nel suo volume interno.
Per verificare la posizione dei volumi, utilizzare il comando:
sudo docker inspect [container_name]
Vedrai il /var/lib/mysql
montato nel volume interno.
Puoi anche cambiare la posizione della directory dei dati e crearne uno sull'host. Avere un volume al di fuori del contenitore consente ad altre applicazioni e strumenti di accedere ai volumi quando necessario.
1. Innanzitutto, trova un volume appropriato sull'host e crea una directory di dati su di esso:
sudo mkdir -p /storage/docker/mysql-data
2. Ora riavvia il container, montando la directory precedentemente creata:
docker run \
--detach \
--name=[container_name] \
--env="MYSQL_ROOT_PASSWORD=my_password" \
--publish 6603:3306 \
--volume=/root/docker/[container_name]/conf.d:/etc/mysql/conf.d \
--volume=/storage/docker/mysql-data:/var/lib/mysql \
mysql
Se ispezioni il contenitore, dovresti vedere che il contenitore MySQL ora memorizza i suoi dati sul sistema host. Esegui il comando:
sudo docker inspect [container_name]
Avvia, arresta e riavvia il contenitore MySQL
Il contenitore si interrompe automaticamente quando il processo in esecuzione al suo interno si interrompe.
Per avviare il contenitore MySQL corri:
sudo docker start [container_name]
Arresta il contenitore MySQL , usa il comando:
sudo docker stop [container_name]
Per riavviare il contenitore MySQL corri:
sudo docker restart [container_name]
Elimina il contenitore MySQL
Prima di eliminare un container MySQL, assicurati di interromperlo prima.
Quindi, rimuovi il contenitore Docker con:
sudo docker rm [container_name]