Si vous envisagez d'installer MariaDB sur votre système, vous souhaiterez peut-être l'isoler du reste du système afin de ne rien casser. Certes, vous pouvez utiliser une machine virtuelle, mais cela nécessiterait beaucoup de ressources car vous devrez installer un système entier au-dessus d'un autre. Alors pourquoi ne pas déployer un Docker pour MariaDB ?
Si votre matériel est limité, ce n'est pas un problème, Docker peut vous aider ! Docker est une solution de virtualisation légère. Et dans ce didacticiel, vous apprendrez à déployer une installation de production de serveur Docker pour MariaDB dans un conteneur Docker en utilisant moins de ressources.
Continuez à lire et ne gaspillez plus jamais vos ressources !
Prérequis
Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants.
- Une machine Linux :cette démo utilise Ubuntu 20.04 LTS, mais toutes les distributions Linux fonctionneront.
- Docker installé sur votre machine.
- Un utilisateur non root avec des privilèges sudo.
Travailler avec l'image Docker MariaDB
La meilleure façon de commencer à travailler avec MariaDB sur votre machine est d'utiliser l'image Docker officielle pour MariaDB. L'image contient une installation de la dernière version stable de MariaDB, ainsi que des scripts pour vous aider à gérer le conteneur.
1. Exécutez la apt update
commande ci-dessous pour vous assurer que votre système est à jour. Cette commande récupère les dernières listes de packages à partir des référentiels d'Ubuntu et installe tous les packages disponibles.
sudo apt update -y
2. Ensuite, exécutez le systemctl
commande ci-dessous pour démarrer le docker
un service.
sudo systemctl start docker
Le démarrage du service Docker ne fournit pas de sortie. Mais si vous exécutez des commandes liées à Docker alors que Docker n'est pas en cours d'exécution, vous obtiendrez l'erreur suivante.
3. Exécutez le docker status
commande ci-dessous pour s'assurer que le docker
service est en cours d'exécution.
sudo service docker status
Ci-dessous, vous pouvez voir que le service Docker est actif (en cours d'exécution).
4. Enfin, exécutez le gpasswd
commande ci-dessous pour ajouter votre utilisateur actuel au docker grouper. Cela permet à l'utilisateur d'exécuter docker
commandes.
sudo gpasswd -a "${USER}" docker
Ajouter l'utilisateur actuel au docker group vous évite l'erreur suivante lors de l'exécution d'une commande docker.
5. Exécutez la docker search
ci-dessous commande pour rechercher l'image MariaDB. Cette commande recherche dans le Docker Hub (ensemble officiel de référentiels) les images qui correspondent à mariadb
et renvoie les résultats.
sudo docker search mariadb
Cochez toutes les images que vous souhaitez utiliser pour installer MariaDB. Cette démo utilise l'image officielle nommée mariadb car elle est bien entretenue.
La colonne OFFICIELLE affiche un statut OK si une image est officielle. Si l'image n'a pas le statut OK, l'image est fournie par un développeur communautaire. Dans ce cas, vous devrez contacter le développeur si vous rencontrez des problèmes avec l'image.
6. Maintenant, exécutez le docker pull
pour télécharger l'image que vous avez choisie (à l'étape cinq) à partir du référentiel Docker. Cette commande télécharge (pull
) l'image sélectionnée à partir de son référentiel officiel et l'enregistre sur votre ordinateur local.
sudo docker pull mariadb
Une fois la commande terminée, vous obtiendrez la dernière version stable de l'image MariaDB sur votre serveur, comme indiqué ci-dessous.
Si vous préférez installer les versions précédentes, vous pouvez utiliser les balises disponibles pour cette image. Accédez à Balise(s) d'image colonnes dans dockerhub pour afficher toutes les versions, puis exécutez la commande docker pull et spécifiez la version exacte, comme indiqué ci-dessous. sudo docker pull mariadb:10.2
7. Enfin, exécutez les docker images
commande pour lister toutes les images présentes sur votre serveur. À ce stade, vous devriez avoir une image MariaDB Docker valide sur votre serveur.
sudo docker images
Ci-dessous, vous pouvez voir que mariadb est le nom de l'image docker avec une balise comme la plus récente.
Création d'un conteneur MariaDB pour exécuter un serveur MariaDB local
Maintenant que vous avez l'image MariaDB sur votre serveur, vous pouvez exécuter un conteneur à l'aide de cette image. Un conteneur est un environnement d'exécution isolé, contrôlé par les ressources et portable qui s'exécute sur un système d'exploitation.
Vous devez d'abord créer un nouveau opt/mariadb/backup répertoire sur votre serveur pour stocker le fichier de sauvegarde que vous allez créer dans cette démo. La sauvegarde de vos données dans votre environnement de production est cruciale avant d'apporter des modifications en cas de problème.
Lorsque vous modifiez le volume interne d'un conteneur, cette modification est copiée dans le répertoire hôte mappé. Donc, pour conserver une copie de sauvegarde de toutes les données du conteneur, vous allez créer le volume sur le serveur local.
1. Exécutez la commande ci-dessous pour créer le opt/mariadb/backup
annuaire. Le -p
L'option garantit que le répertoire parent existe avant de créer ce répertoire.
Si l'un des répertoires parents du chemin n'existe pas, la commande échouera.
sudo mkdir -p opt/mariadb/backup
2. Ensuite, exécutez le docker run
commande ci-dessous pour créer un conteneur Docker à partir de mariadb
image. Cette commande effectue les actions suivantes :
- Cartes (
-v
) le répertoire par défaut pour contenir les données MariaDB (/var/lib/mysql
) sur votre conteneur Docker sur votre répertoire hôte (/opt/mariadb/backup
).
- Déclare la variable d'environnement MariaDB (
-e
)MYSQL_ROOT_PASSWORD
pour contenir le mot de passe root du serveur MariaDB. Assurez-vous de remplacerata123
avec votre mot de passe sécurisé.
- Demande à Docker de démarrer le conteneur en mode détaché (
-d
), de sorte que le conteneur s'exécute en arrière-plan. Cela vous permet de quitter la session en cours et de continuer à travailler pendant que ce conteneur s'exécute en arrière-plan. Sinon, vous obtiendrez une invite vide et vous devrez tuer le conteneur en cours d'exécution.
- Spécifie le nom du conteneur (
--name mariadbata
) créer. Vous pouvez remplacermariadbata
avec votre nom préféré unique.
- Expose le port MariaDB 3306 par défaut à la machine hôte (
-p 3306:3306
) (où le service MariaDB écoute vos connexions client). Dans le cas du serveur de production, vous mapperez le port par défaut sur le port de production. Mais vous pouvez remplacer3306
avec un autre numéro de port de production.
sudo docker run --name mariadbata -p 3306:3306 -v /opt/mariadb/backup:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=ata123 -d mariadb
À ce stade, le conteneur est créé et s'exécute en arrière-plan, mais vous ne pouvez jamais en être trop sûr. Vous vérifierez donc le conteneur à l'étape suivante.
3. Exécutez le docker ps
commande pour vérifier si votre conteneur Docker est actif ou non.
sudo docker ps
Vous pouvez voir ci-dessous que le conteneur mariadbata est Up depuis 7 minutes, écoutant sur le port 3306 sur toutes les interfaces hôtes. Vous pouvez également voir l'ID (3a7fa779b559) du conteneur.
Vous pouvez utiliser cet ID unique pour vous connecter au conteneur, répertorier les conteneurs, arrêter les conteneurs ou supprimer le conteneur.
4. Maintenant, exécutez le docker exec
commande ci-dessous pour vérifier la version du serveur MariaDB dans le mariadbata
récipient.
sudo docker exec -it mariadbata mysql -V
Au moment de la rédaction, la dernière version de mariadb est 10.6.5, comme indiqué ci-dessous, et votre version peut être différente. Étant donné que MariaDB est un fork de MySQL, Docker a utilisé le client mysql comme client par défaut pour interagir avec le service MariaDB illustré ci-dessous.
5. Exécutez la commande ci-dessous pour entrer dans le shell MariaDB (/bin/bash
).
sudo docker exec -it mariadbata /bin/bash
L'invite passe du shell Ubuntu au shell MariaDB, comme indiqué ci-dessous.
Vous pouvez voir ci-dessous l'ID de conteneur (3a7fa779b559) que vous avez vu à l'étape trois. Voir l'ID du conteneur dans l'invite indique que vous êtes actuellement dans le conteneur mariadbata.
Une fois à l'intérieur du conteneur, vous pouvez exécuter n'importe quelle commande avec le préfixe sudo puisque vous êtes maintenant l'utilisateur root de ce conteneur.
Par exemple, vous pouvez exécuter la commande apt update ci-dessous pour mettre à jour la base de données du package à l'intérieur du conteneur sans le préfixe sudo.
apt update -y
6. Enfin, exécutez le exit
commande pour quitter le shell MariaDB et revenir à votre shell hôte Ubuntu.
exit
Accéder à MariaDB Shell depuis le terminal hôte
Vous pouvez également accéder au shell MariaDB directement depuis le terminal hôte en installant le client MariaDB sur l'hôte. Cela est utile dans les situations où vous ne souhaitez pas basculer vers le shell du conteneur à chaque fois.
1. Exécutez l'apt install
commande ci-dessous pour installer le client MariaDB sur votre hôte Ubuntu.
sudo apt install -y mariadb-client
2. Ensuite, exécutez le docker inspect
commande ci-dessous pour trouver l'adresse IP du conteneur en cours d'exécution.
sudo docker inspect container-name | grep IPAddress
3. Lancez maintenant le mysql
commande ci-dessous pour se connecter à l'instance de base de données depuis votre hôte (-h
) avec votre nom d'utilisateur (root
) et mot de passe (-p
). N'oubliez pas de remplacer host_ip
avec l'adresse IP de votre conteneur Docker en cours d'exécution.
sudo mysql -u root -p -h host_ip
4. Entrez le mot de passe que vous avez configuré précédemment (ata123 ) à l'étape 2 lorsque vous y êtes invité, et l'invite du client MariaDB s'affiche, comme indiqué ci-dessous.
Vous pouvez ensuite exécuter n'importe quel code SQL dont vous avez besoin pour exécuter sur le serveur MariaDB.
5. Enfin, exécutez le ls
commande ci-dessous pour lister les fichiers de sauvegarde (opt/mariadb/backup
) du conteneur MariaDB.
ls -l opt/mariadb/backup
Vous verrez une liste de fichiers similaires ci-dessous. La sortie indique que vous avez créé avec succès une sauvegarde du conteneur mariadbata. Vous pouvez copier les fichiers vers un autre emplacement sur votre hôte si nécessaire.
Arrêter et retirer le conteneur
Vous souhaitez peut-être libérer des ressources RAM ou CPU. Si c'est le cas, vous pouvez arrêter le conteneur en exécutant le docker stop
commande et en spécifiant soit l'ID du conteneur, soit le nom du conteneur.
1. Exécutez l'une des commandes ci-dessous pour arrêter un conteneur spécifique.
# Stops Container by Container Name (mariadbata)
sudo docker stop mariadbata
# Stops Container by Container ID (3a7fa779b559)
sudo docker stop 3a7fa779b559
À ce stade, le conteneur est arrêté mais vivra toujours sur votre hôte, et les données restent.
2. Maintenant, exécutez le docker ps
commande ci-dessous pour tout lister (-a
) conteneurs.
docker ps -a
Comme vous le voyez ci-dessous, le conteneur s'affiche toujours mais est dans un état Quitté, ce qui indique que le conteneur est arrêté.
3. Enfin, exécutez la commande ci-dessous pour supprimer (rm
) le conteneur arrêté (mariadbata
). La possibilité de supprimer un conteneur est pratique lorsque l'image Docker ne répond pas à vos besoins ou que vous souhaitez simplement recommencer.
Notez que vous devez d'abord arrêter le conteneur avant de le supprimer avec la commande docker rm.
sudo docker rm mariadbata
Si vous préférez supprimer l'intégralité du conteneur avec ses volumes de données pour économiser vos ressources, ajoutez l'option -v avec la commande sudo docker comme celle ci-dessous.
sudo docker rm -v mariadbata
Maintenant, réexécutez la commande docker ps ci-dessous pour répertorier tous les conteneurs afin de vérifier que le conteneur est complètement supprimé.
docker ps -a
Comme vous le voyez ci-dessous, la mariadbata conteneur est parti avec toutes ses données.
Conclusion
Dans ce didacticiel, vous avez appris à créer un conteneur MariaDB Docker sur votre machine hôte Ubuntu. Vous avez également appris à créer un stockage persistant pour vos conteneurs Docker en utilisant des conteneurs de volume de données pour sauvegarder les données du conteneur.
À ce stade, vous pouvez maintenant créer et gérer votre propre conteneur MariaDB Docker sur Ubuntu.
Maintenant, pourquoi ne pas créer un workflow Buddy CI/CD en utilisant un conteneur MariaDB Cocker comme base de données avec ces nouvelles connaissances ? Ou même créer un service MariaDB pour vos applications ?