Ce guide explique étape par étape comment configurer un nouveau serveur MySQL exécuté dans un conteneur Docker en quelques minutes seulement.
L'un des avantages de Docker est de pouvoir l'utiliser rapidement pour tester 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 comment votre application interagit avec elle.
L'exécution de MySQL avec des conteneurs Docker est un mécanisme largement utilisé. MySQL est l'une des bases de données les plus utilisées avec les conteneurs Docker.
Pour créer MySQL en tant que conteneur Docker, Docker doit être installé sur la machine hôte. Si vous ne l'avez pas installé, voici un guide étape par étape sur l'installation de Docker dans Ubuntu.
1. Extraire l'image MySQL Docker
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 du Docker Hub.
Vous pouvez télécharger une version spécifique telle que 8.0, 5.7, 5.6, ou opter pour la dernière version comme indiqué dans la commande suivante :
sudo docker pull mysql:latest
Si vous voulez une version particulière de MySQL, remplacez le latest
avec le numéro de version.
Vous pouvez exécuter les docker images
commande pour voir une liste des images Docker que vous avez extraites du 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 maintenant disponible pour 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 devrait ê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 /var/lib/mysql
annuaire. 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 là et prêt à diffuser des données. Il peut ensuite être attaché à un conteneur MySQL fraîchement lancé.
3. Exécuter un conteneur Docker MySQL
Maintenant que vous avez une image MySQL Docker sur votre machine et 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 racine MySQL en utilisant le MYSQL_ROOT_PASSWORD
variable d'environnement.
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 chaque paramètre de cette commande signifie :
-d
exécutera ce conteneur en mode détaché afin qu'il s'exécute 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
en utilisant les clients MySQL (mysql
) s'exécutant sur votre hôte.-v
option lier ce dossier de données à l'intérieur du volume du conteneur (/var/lib/mysql
) au volume Docker local (mysql-data
) que 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
4. Connexion au conteneur MySQL
Vous pouvez obtenir un shell MySQL interactif en l'attachant au conteneur et en exécutant le mysql
commande. Cela fournit l'interface de ligne de commande MySQL complète pour utiliser toutes les commandes et tous les drapeaux familiers.
sudo docker exec -it mysql-server mysql -u root -p
Vous pouvez également vous connecter à l'instance MySQL Docker à l'aide de mysql
client si vous l'avez 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 "Hostname", spécifiez l'adresse IP de la machine sur laquelle vous avez démarré le Docker Container.
Bien sûr, dans les exemples ci-dessus pour un nom d'hôte, vous pouvez utiliser l'adresse IP de la machine sur laquelle le conteneur Docker MySQL fonctionne au lieu de 127.0.0.1.
Vous pouvez trouver cette adresse en exécutant ifconfig
commande sans aucun argument.
L'utilisation de l'adresse IP de la machine vous permet d'accéder à distance au serveur MySQL.
5. Arrêter, démarrer et redémarrer le conteneur MySQL
Cette commande va s'arrêter temporairement le conteneur MySQL en cours d'exécution (et peut être repris/redémarré plus tard) :
sudo docker stop mysql-server
Pour commencer 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 voir, exécuter MySQL dans Docker est beaucoup plus rapide et plus facile que d'installer MySQL Server localement. Cependant, il y a beaucoup d'autres choses à prendre en compte si vous comptez utiliser MySQL sur Docker pour quoi que ce soit au-delà des tests.
Vous pouvez consulter la page MySQL sur Docker Hub et le manuel officiel de MySQL sur le sujet pour plus d'informations.
Faites-moi savoir si vous avez des questions ou des suggestions. Je serai heureux de vous suivre.