Recherche de site Web

Comment exécuter MySQL dans un conteneur Docker : un guide simple et facile à suivre


Ce guide étape par étape explique comment configurer un nouveau serveur MySQL exécuté dans un conteneur Docker en quelques minutes seulement.

L'un des avantages de Docker est la façon dont vous pouvez l'utiliser rapidement pour essayer des applications sans l'installer directement sur votre ordinateur. Par exemple, vous pouvez utiliser Docker pour exécuter une base de données dans un conteneur en tant que serveur distant et tester la façon dont votre application interagit avec elle.

Exécuter MySQL avec des conteneurs Docker est un mécanisme largement utilisé. MySQL est l'une des bases de données les plus populaires utilisées avec les conteneurs Docker.

Bien sûr, Docker doit être installé sur la machine hôte pour créer MySQL en tant que conteneur Docker. Donc, si vous ne l’avez pas installé, voici quelques guides qui vous seront très utiles :

  • Comment installer Docker Engine sur Ubuntu : un guide étape par étape
  • Comment installer Docker sur AlmaLinux/Rocky Linux

1. Extrayez l'image Docker MySQL

La première chose que vous devez faire pour créer et tester le serveur MySQL dans Docker est d'extraire une image officielle MySQL depuis Docker Hub.

Vous pouvez télécharger une version spécifique, telle que 8.0, 5.7 ou 5.6, ou opter pour la dernière version comme indiqué dans la commande suivante :

sudo docker pull mysql:latest

Si vous souhaitez une version particulière de MySQL, remplacez le latest par le numéro de version.

Vous pouvez exécuter la commande docker images pour afficher la liste des images Docker que vous avez extraites de Docker Hub.

sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mysql        latest    2fe463762680   13 hours ago   514MB

Comme vous pouvez le voir, l'image MySQL est désormais disponible sur notre Docker installé localement.

2. Configuration d'un volume Docker

Comme vous le savez, les conteneurs Docker sont, en principe, temporaires et toute donnée ou configuration risque d'être perdue si le conteneur est supprimé.

Les volumes Docker, cependant, fournissent un mécanisme pour conserver les données créées dans un conteneur Docker. Par conséquent, ils constituent le mécanisme préféré de Docker pour stocker les données persistantes des conteneurs Docker.

MySQL stocke ses fichiers de données dans le répertoire /var/lib/mysql . Ainsi, avant le déploiement, vous devrez configurer un volume Docker pour conserver votre base de données. Sinon, vos données seront perdues au redémarrage du conteneur.

Créons un nouveau volume et nommons-le mysql-data. Il sera utilisé pour stocker toutes les informations de votre base de données.

sudo docker volume create mysql-data

Vous pouvez lister tous les volumes connus de Docker en exécutant la commande ci-dessous :

sudo docker volume ls
DRIVER    VOLUME NAME
local     mysql-data

Comme vous pouvez le voir, notre volume Docker nouvellement créé nommé mysql-data est ici et prêt à servir des données. Il peut ensuite être attaché à un conteneur MySQL fraîchement lancé.

3. Exécutez un conteneur Docker MySQL

Maintenant que vous disposez d'une image MySQL Docker sur votre machine et d'un volume pour conserver les données, vous pouvez déployer un conteneur. Vous devez également définir un mot de passe pour l'utilisateur root MySQL en utilisant la variable d'environnement MYSQL_ROOT_PASSWORD.

Maintenant, exécutons le conteneur :

sudo docker run -d --name=mysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password mysql

C'est ça. Cela démarrera la dernière version de l'instance MySQL, qui peut être accessible à distance de n'importe où avec le mot de passe root spécifié. 

Pour rendre les choses plus transparentes, décomposons cette syntaxe. Tout d’abord, voici ce que signifie chaque paramètre de cette commande :

  • -d exécutera ce conteneur en mode détaché en arrière-plan.
  • --name attribue le nom mysql-server à votre instance de conteneur. Si vous ne le spécifiez pas, Docker générera un nom aléatoire.
  • -p liera le port du conteneur MySQL 3306 au même port sur votre machine hôte. Vous pourrez vous connecter à 127.0.0.1 sur le port 3306 à l'aide de clients MySQL (mysql) exécutés sur votre hôte.
  • L'option -v associe ce dossier de données à l'intérieur du volume du conteneur (/var/lib/mysql) au volume Docker local (mysql-data). vous avez créé à l'étape précédente.
  • -e définit une variable d'environnement. Dans ce cas, le mot de passe root MySQL.
  • mysql est le nom de l'image que nous utilisons pour créer le conteneur.

Vous pouvez vérifier si le conteneur est en cours d'exécution en répertoriant les conteneurs en cours d'exécution :

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

Connexe : MySQL : Comment sauvegarder (vider) et restaurer une base de données à l'aide de mysqldump

4. Connexion au conteneur MySQL

Vous pouvez obtenir un shell MySQL interactif en l'attachant au conteneur et en exécutant la commande mysql. Cela fournit l'interface de ligne de commande MySQL complète pour utiliser toutes les commandes et indicateurs familiers.

sudo docker exec -it mysql-server mysql -u root -p

Connexe : Comment créer une base de données dans MySQL à l'aide de la ligne de commande

Vous pouvez également vous connecter à l'instance MySQL Docker à l'aide du client mysql s'il est préinstallé sur votre hôte.

Attention, par défaut, le client mysql essaie de se connecter à l'aide d'un socket UNIX lorsque vous lui dites de se connecter à localhost. Utilisez donc 127.0.0.1 et non localhost.

mysql -u root -h 127.0.0.1 -p

Bien entendu, vous pouvez également utiliser un client basé sur une interface graphique tel que MySQL Workbench pour vous connecter à la base de données. Par exemple, dans votre MySQL Workbench pour « Nom d'hôte », spécifiez l'adresse IP de la machine sur laquelle vous avez démarré le conteneur Docker.

Connexe : Comment créer une base de données dans MySQL avec MySQL Workbench

Bien entendu, dans les exemples présentés ci-dessus pour un nom d'hôte, vous pouvez utiliser l'adresse IP de la machine sur laquelle fonctionne le conteneur Docker MySQL au lieu de 127.0.0.1.

Vous pouvez trouver cette adresse en exécutant la commande ifconfig sans aucun argument. L'adresse IP de la machine vous permet d'accéder au serveur MySQL à distance.

5. Arrêtez, démarrez et redémarrez le conteneur MySQL

Cette commande arrêtera temporairement le conteneur MySQL en cours d'exécution (et pourra être reprise/redémarrée plus tard) :

sudo docker stop mysql-server

Pour démarrer le conteneur MySQL, exécutez :

sudo docker start mysql-server

La commande ci-dessous est utilisée pour redémarrer le conteneur MySQL en cours d'exécution :

sudo docker restart mysql-server

Conclusion

Comme vous pouvez le constater, exécuter MySQL dans Docker est beaucoup plus rapide et plus simple que d'installer MySQL Server localement. Cependant, il y a bien d'autres éléments à prendre en compte si vous utilisez MySQL sur Docker pour autre chose que les tests.

Pour plus d'informations, vous pouvez consulter la page MySQL sur Docker Hub et le manuel MySQL officiel sur le sujet.

Faites-moi savoir si vous avez des questions ou des suggestions. Je serai heureux de faire un suivi avec vous.

Articles connexes: