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 nommysql-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 MySQL3306
au même port sur votre machine hôte. Vous pourrez vous connecter à127.0.0.1
sur le port3306
à 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.