Présentation
MySQL est un système de gestion de base de données relationnelle open source bien connu et l'une des solutions de serveur Web les plus populaires. Il stocke et structure les données de manière significative, garantissant une accessibilité facile.
Docker est un ensemble de produits de plate-forme en tant que service qui prend en charge le développement CI/CD. Il permet aux utilisateurs de développer et de déployer des applications dans des environnements virtuels, appelés conteneurs. Avec une seule image, Docker peut démarrer une application avec toutes ses bibliothèques et dépendances.
Dans ce didacticiel, découvrez comment déployer un conteneur MySQL Docker et commencer à travailler avec la base de données conteneurisée.
Prérequis
- Accès à une ligne de commande/fenêtre de terminal
- Un compte utilisateur avec sudo privilèges ou accès à la racine compte
- Une installation Docker existante
Exécuter un conteneur Docker MySQL
Si vous avez besoin de configurer une base de données rapidement et sans utiliser trop de ressources, déployez MySQL dans un conteneur est une solution rapide et efficace. Ceci n'est approprié que pour les petites et moyennes applications. Les applications de niveau entreprise ne trouveraient pas de conteneur MySQL Docker suffisant pour leur charge de travail.
L'utilisation du logiciel Docker pour configurer votre base de données devient de plus en plus populaire pour les applications à petite échelle. Au lieu d'avoir un serveur séparé pour l'hébergement de la base de données, vous pouvez déployer un conteneur de base de données MySQL.
Plusieurs conteneurs peuvent s'exécuter sur votre ordinateur. Les conteneurs partagent le même noyau et les mêmes bibliothèques de l'hôte tout en conditionnant l'application ou le logiciel déployé en unités uniques. Cela rend la base de données extrêmement légère et rapide à lancer.
Installer un conteneur Docker MySQL
Configurer une base de données dans Docker consiste simplement à créer un conteneur basé sur une image MySQL. Suivez les étapes décrites ci-dessous pour que votre conteneur MySQL soit opérationnel.
Étape 1 :Extrayez l'image MySQL Docker
1. Commencez par extraire l'image Docker appropriée pour MySQL. Vous pouvez télécharger une version spécifique ou opter pour la dernière version comme indiqué dans la commande suivante :
sudo docker pull mysql/mysql-server:latest
Si vous voulez une version particulière de MySQL, remplacez latest
avec le numéro de version.
2. Vérifiez que l'image est maintenant stockée localement en répertoriant les images Docker téléchargées :
sudo docker images
La sortie doit inclure mysql/mysql-server
parmi les images répertoriées.
Étape 2 :Déployez le conteneur MySQL
1. Une fois que vous avez l'image, passez au déploiement d'un nouveau conteneur MySQL avec :
sudo docker run --name=[container_name] -d [image_tag_name]
- Remplacer
[container_name]
avec le nom de votre choix. Si vous ne fournissez pas de nom, Docker en génère un aléatoire. - Le
-d
ordonne à Docker d'exécuter le conteneur en tant que service en arrière-plan. - Remplacer
[image_tag_name]
avec le nom de l'image téléchargée à l'étape 1.
Dans cet exemple, nous créons un conteneur nommé mysql_docker
avec le latest
balise de version :
sudo docker run --name=[container_name] -d mysql/mysql-server:latest
2. Ensuite, vérifiez si le conteneur MySQL est en cours d'exécution :
docker ps
Vous devriez voir le conteneur nouvellement créé répertorié dans la sortie. Il comprend des détails sur le conteneur, l'un étant l'état de cet environnement virtuel. Le statut passe de health: starting
à healthy
, une fois la configuration terminée.
Étape 3 :Connectez-vous au conteneur MySQL Docker
1. Avant de pouvoir connecter le conteneur du serveur MySQL à l'hôte, vous devez vous assurer que le package client MySQL est installé :
apt-get install mysql-client
2. Ensuite, ouvrez le fichier logs du conteneur MySQL pour trouver le mot de passe root généré :
sudo docker logs [container_name]
Pour le mysql_docker
conteneur, nous exécutons :
sudo docker logs mysql_docker
3. Faites défiler la sortie et trouvez la ligne [Entrypoint] GENERATED ROOT PASSWORD
:, copiez et collez le mot de passe dans un bloc-notes ou un éditeur de texte pour pouvoir l'utiliser ultérieurement.
4. Ensuite, accédez au shell bash du conteneur MySQL en tapant :
sudo docker exec -it [container_name] bash
Pour le conteneur créé à titre d'exemple, nous exécutons :
sudo docker -it mysql_docker bash
3. Lorsque vous y êtes invité, fournissez le mot de passe racine que vous avez copié à partir du fichier journaux. Avec cela, vous avez connecté le client MySQL au serveur.
4. Enfin, modifiez le mot de passe root du serveur pour protéger vos informations :
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[newpassword]';
Remplacez [newpassword]
avec un mot de passe fort de votre choix.
Configurer le conteneur MySQL
Lorsque vous installez un conteneur MySQL, vous trouverez ses options de configuration dans le /etc/mysql/my.cnf=
répertoire.
Si vous devez modifier la configuration, créez un autre fichier de configuration sur la machine hôte et montez-le dans le conteneur.
1. Commencez par créer un nouveau répertoire sur la machine hôte :
sudo mkdir -p /root/docker/[container_name]/conf.d
2. Créez un fichier de configuration MySQL personnalisé dans ce répertoire :
sudo nano /root/docker/[container_name]/conf.d/my-custom.cnf
3. Une fois dans le fichier, vous pouvez ajouter des lignes avec la configuration souhaitée.
Par exemple, si vous souhaitez augmenter le nombre maximum de connexions à 250 (au lieu de 151 par défaut), ajoutez les lignes suivantes au fichier de configuration :
[mysqld]
max_connections=250
4. Enregistrez et quittez le fichier.
5. Pour que les modifications prennent effet, vous devez supprimer et réexécuter le conteneur MySQL . Cette fois, le conteneur utilise une combinaison de paramètres de configuration du fichier nouvellement créé et des fichiers de configuration par défaut.
Pour ce faire, exécutez le conteneur et mappez le chemin du volume avec la commande :
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. Pour vérifier si le conteneur a chargé la configuration depuis l'hôte, exécutez la commande suivante :
mysql -uroot -pmypassword -h127.0.0.1 -P6603 -e 'show global variables like "max_connections"';
Vous devriez voir que le nombre maximum de connexions est maintenant 250
.
Gérer le stockage des données
Par défaut, Docker stocke les données dans son volume interne.
Pour vérifier l'emplacement des volumes, utilisez la commande :
sudo docker inspect [container_name]
Vous verrez le /var/lib/mysql
monté dans le volume interne.
Vous pouvez également modifier l'emplacement du répertoire de données et créez-en un sur l'hôte. Avoir un volume en dehors du conteneur permet à d'autres applications et outils d'accéder aux volumes en cas de besoin.
1. Tout d'abord, trouvez un volume approprié sur l'hôte et créez-y un répertoire de données :
sudo mkdir -p /storage/docker/mysql-data
2. Redémarrez maintenant le conteneur, en montant le répertoire créé précédemment :
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
Si vous inspectez le conteneur, vous devriez voir que le conteneur MySQL stocke désormais ses données sur le système hôte. Exécutez la commande :
sudo docker inspect [container_name]
Démarrer, arrêter et redémarrer le conteneur MySQL
Le conteneur s'arrête automatiquement lorsque le processus qui s'y exécute s'arrête.
Pour démarrer le conteneur MySQL exécuter :
sudo docker start [container_name]
Arrêtez le conteneur MySQL , utilisez la commande :
sudo docker stop [container_name]
Pour redémarrer le conteneur MySQL exécuter :
sudo docker restart [container_name]
Supprimer le conteneur MySQL
Avant de supprimer un conteneur MySQL, assurez-vous de l'avoir d'abord arrêté.
Ensuite, supprimez le conteneur Docker avec :
sudo docker rm [container_name]