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

Come configurare MySQL con Docker in Linux

Se non conosci MySQL o qualcuno che desidera installare il database MySQL in modo rapido e semplice, allora questo articolo è per te. In questo articolo impareremo come configurare MySQL con Docker e Docker Compose in Linux.

Iniziamo configurando l'ambiente Docker per avviare il contenitore MySQL.

1. Installa Docker

Prima di avviare il contenitore docker MySQL, è necessario che docker e docker-compose siano installati nel computer. Se non hai installato docker e docker-compose, fai riferimento alle seguenti guide:

  • Come installare Docker in CentOS
  • Come installare Docker in Ubuntu

Puoi anche fare riferimento ai collegamenti alla documentazione Docker ufficiale indicati di seguito per sapere come configurare Docker e Docker Compose.

  • https://docs.docker.com/engine/install/
  • https://docs.docker.com/compose/install/

Puoi eseguire i seguenti comandi per controllare la finestra mobile e le versioni di composizione mobile con cui stai eseguendo.

$ docker --version
Docker version 20.10.11, build dea9396
$ docker-compose --version
docker-compose version 1.29.2, build unknown

2. Scarica l'immagine Docker MySQL

Vai all'Hub Docker per ottenere l'immagine della finestra mobile MySQL . L'importante è decidere quale versione di MySQL eseguire.

Esegui il comando seguente per eseguire il pull dell'immagine MySQL dall'hub Docker al tuo computer.

$ docker pull mysql:latest

Avviso :Non è necessario utilizzare il tag "latest ", per impostazione predefinita estrarrà l'ultima immagine.

Per verificare se l'immagine è disponibile localmente, puoi eseguire il comando seguente:

$ docker images mysql

Risultato di esempio:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    b05128b000dd   12 days ago   516MB

Ora l'immagine è pronta per far girare il contenitore. Puoi anche saltare questo passaggio ed eseguire "docker run " comando come mostrato nella sezione successiva che estrarrà l'immagine se non disponibile localmente.

3. Avvia MySQL Container

Esegui il comando seguente per avviare il contenitore Docker MySQL:

$ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysql

Analizziamo il comando precedente e vediamo cosa fa ogni flag.

--name → Per dare un nome al tuo contenitore. Se non stai specificando questo flag, Docker assegnerà alcuni nomi generati casualmente.

-p → Mappatura delle porte. MySQL ascolterà sulla porta 3306 quindi stiamo mappando le porte (33063306 ) dal computer host al contenitore Docker. Non è necessario che la porta host sia 3306 , può essere qualsiasi cosa disponibile per essere utilizzata.

Esegui il seguente netstat comando nella tua macchina locale per verificare se la porta mappata è in ascolto o meno una volta avviato il container.

$ netstat -tlnup | grep -i 3306

Risultato di esempio:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      168870/docker-proxy 
tcp6       0      0 :::3306                 :::*                    LISTEN      168878/docker-proxy 

-v → Attacca un volume al contenitore. Il comportamento predefinito della finestra mobile è che non persisterà i dati una volta rimosso il contenitore, quindi perderai tutti i tuoi dati.

Per creare una memoria persistente, ho creato un volume denominato "mysql_volume ". MySQL memorizza i dati in /var/lib/mysql/ all'interno del contenitore e qui è mappato alla directory localhost /var/lib/docker/volumes/mysql_volume1/_data , quindi i tuoi dati saranno persistenti.

Se desideri saperne di più sui volumi docker, dai un'occhiata al nostro articolo dettagliato sullo stesso.

-d → Avvierà ed eseguirà il contenitore in modalità scollegata. Se ometti -d flag, quindi vedrai i log di avvio del contenitore nel terminale e dovrai aprire una nuova sessione del terminale per connetterti al contenitore.

-e → Variabili ambientali. Devi impostare la password utente root di MySQL utilizzando uno dei parametri seguenti.

  • MYSQL_ROOT_PASSWORD → Imposta la tua password utilizzando questa variabile di ambiente.
  • MYSQL_ALLOW_EMPTY_PASSWORD → Verrà impostata una password vuota o nulla. Devi impostare MYSQL_ALLOW_EMPTY_PASSWORD=1 .
  • MYSQL_RANDOM_ROOT_PASSWORD → verrà generata una password casuale all'avvio del container. Devi impostare MYSQL_RANDOM_ROOT_PASSWORD=1 per generare la password casuale.

Se salti questo passaggio, verrà generato un errore come mostrato di seguito.

4. Controlla lo stato del contenitore MySQL

Puoi controllare lo stato del contenitore avviato utilizzando il seguente comando:

$ docker ps

Risultato di esempio:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
e1fb895f6f0f   mysql     "docker-entrypoint.s..."   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

5. Collegati al database MySQL

Esegui il comando seguente per connetterti al contenitore MySQL.

$ docker exec -it mysql bash

Collegati al database MySQL come root utente eseguendo il comando seguente. Nel mio caso, ho impostato la mia password tramite MYSQL_ROOT_PASSWORD .

$ mysql -u root -p

Se hai usato MYSQL_RANDOM_ROOT_PASSWORD=1 all'avvio del container, puoi ottenere la password generata automaticamente dai log.

$ docker logs
$ docker logs mysql

La password di root generata automaticamente sarà lunga e non è qualcosa da ricordare. Puoi reimpostare la password di root eseguendo la query seguente.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysqlpassword';

Sostituisci la password 'mysqlpassword' con la tua password. Puoi anche creare il tuo utente e concedergli i privilegi come richiesto.

6. Carica dati campione

L'obiettivo principale della configurazione di mysql è caricare alcuni dati ed eseguire query su di essi. Ci sono alcuni modi per caricare i dati. Ho un file di esempio chiamato "load_data.sql " con le seguenti query.

CREATE DATABASE IF NOT EXISTS football;

USE football;

CREATE TABLE IF NOT EXISTS players (
    player_name     VARCHAR(16)     NOT NULL,
    player_age      INT             NOT NULL,
    player_club     VARCHAR(16)     NOT NULL,
    player_country  VARCHAR(16)     NOT NULL
);

INSERT INTO players VALUES ("Messi",34,"PSG","Argentina");
INSERT INTO players VALUES ("Ronaldo",36,"MANU","Portugal");
INSERT INTO players VALUES ("Neymar",29,"PSG","Brazil");
INSERT INTO players VALUES ("Kane",28,"SPURS","England");
INSERT INTO players VALUES ("E Hazard",30,"MADRID","Belgium");

Il primo approccio sarà copiare i dati dalla macchina locale al contenitore docker usando "docker cp " comando.

$ docker cp load_data.sql mysql:/tmp

$ docker exec -it mysql bash

$ ls -l /tmp/

Ora puoi connetterti al client mysql ed eseguire il comando sorgente o reindirizzare il file al client mysql.

$ mysql -u root -p

mysql> source /tmp/load_data.sql

Oppure

$ mysql -u root -p < /tmp/load_data.sql

Collegati al database e interroga la tua tabella.

$ mysql -u root -p

mysql> show databases;

mysql> use football;

mysql> show tables;

mysql> select * from players;

Il secondo approccio sarebbe reindirizzare il .sql file durante l'esecuzione di docker exec comando.

$ docker exec -i mysql mysql -u root -p < load_data.sql

7. Imposta il contenitore MySQL utilizzando Docker-Compose

Invece di estrarre l'immagine ed eseguire docker run comando, puoi utilizzare docker-compose per far girare velocemente il contenitore. Docker-compose è più adatto quando devi creare più di un contenitore.

Crea un file chiamato docker-compose.yml o docker-compose.yaml file. Copia e incolla il seguente codice yaml. Questo è lo stesso che ho eseguito manualmente nelle sezioni precedenti.

version: '3.8'
services:
  database:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: temp1234
    ports:
      - "3306:3306"
    volumes:
      - mysql_volume:/var/lib/mysql
volumes:
  mysql_compose_volume:

Ora esegui il comando seguente che attiverà il contenitore Docker MySQL.

$ docker-compose up

Esegui il comando seguente per controllare lo stato del contenitore avviato utilizzando docker-compose:

$ docker-compose ps

Risultato di esempio:

Name              Command             State                          Ports                       
-------------------------------------------------------------------------------------------------
mysql   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp

8. Connettiti al database MySQL utilizzando MySQL Workbench

Finora abbiamo visto come connettersi al database usando il client mysql dall'interno del container. Puoi anche connetterti al database utilizzando qualsiasi client GUI come mysql workbench, dbeaver, Heidi SQL, ecc.

La cosa importante da notare, indipendentemente dal client GUI che stai utilizzando, è quale porta è stata mappata quando avvii il container.

Nel mio caso ho mappato localhost (3306 ) -> contenitore (3306 ). Quindi, se devo stabilire una connessione al database, devo connettermi a localhost:3306 o 127.0.01:3306 .

Sto usando MySQL Workbench come client della GUI. Se non hai installato MySQL workbench nella tua macchina, puoi utilizzare le istruzioni seguenti per installarlo.

8.1. Installa MySQL Workbench in Linux

Vai al sito ufficiale per scaricare il file del pacchetto. Devi scegliere il tuo sistema operativo per scaricare il .deb o .rpm file.

Nel passaggio successivo, ti verrà chiesto di accedere o registrarti. Puoi saltare l'accesso o la registrazione facendo clic sull'opzione "No grazie, avvia il download".

Sui sistemi basati su Debian, installa MySQL Workbench come di seguito:

$ cd <path to downloaded .deb file>

$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb

Sui sistemi basati su RHEL, installa MySQL Workbench come di seguito:

$ cd <path to downloaded .rpm file>

$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm

Una volta completata l'installazione, puoi avviare mysql workbench dal menu o dal trattino.

Avvia MySQL Workbench

8.2. Collegati al database MySQL

Connettiti al database in esecuzione all'interno di un contenitore Docker. Dovresti provare a connetterti a localhost:3306 o localhost:<port-no> a seconda di come è impostato il tuo container.

Prima di connetterti al database puoi premere "Test Connection " per verificare che MySQL workbench sia stato in grado di connettersi correttamente all'istanza del database.

Ora puoi iniziare a eseguire le tue query sulle tabelle che hai creato.

9. Conclusione

In questo articolo, abbiamo visto brevemente come avviare i container MySQL nella finestra mobile usando docker run e docker-compose metodi. Se vuoi configurare MySQL per scopi di test o apprendimento, Docker è più che sufficiente.

Spero che questo aiuti.


Docker
  1. Come impostare un registro Docker privato su Rocky Linux 8

  2. Come configurare Pure-FTPD con MySQL su CentOS e RedHat

  3. Come configurare LogAnalyzer con Rsyslog e MySQL

  4. Come configurare Opencart su Rocky Linux/Centos 8 con Apache, PHP, Mysql (stack LAMP)

  5. Come installare Nextcloud con Docker sul tuo server Linux

Come configurare il firewall con Gufw su desktop Linux

Come sostituire Docker con Podman su un Mac

Come installare Docker CE in Linux Mint 20

Come configurare il servizio di bilanciamento del carico Traefik con Docker in Ubuntu 20.04

Cron Vs Anacron:come configurare Anacron su Linux (con un esempio)

Come configurare Logstash su Linux con ElasticSearch, Redis, Nginx