Si vous avez suivi la formation, depuis le départ, comme vous pouvez le voir, je ne commence par le serveur Web mais la base de données.
Pour le serveur Web, nous allons créer notre image, je vais donc commencer cette partie sur Docker en utilisant une image officielle.
Sur le site Docker Hub se trouve plusieurs dépôts d’image proposer par la communauté et les applications elles-mêmes.
Sur notre serveur Web, nous allons installer MariaDB, dans la zone de recherche entrer MariaDB et valider.
Dans la liste de résultat, sélectionner le dépôt officiel.
Sur la page de détail, on va d’abord s’intéresser à deux éléments, en haut on trouve une ligne de commande sur fond noir, qui est la ligne à exécuter pour télécharger pour télécharger l’image du conteneur. Le deuxième élément c’est la liste des tags, qui correspond souvent à la version du programme.
Pat défaut, le tag lastest est utilisé.
En cliquant sur une version, on arrive vers le dépot où se trouve un fichier dockerfile qui permet de voir comme l’image est contruite
La première étape va être de récupérer l’image sur notre serveur, pour cela on va télécharger l’image MariaDB 10.5 :
Pour afficher les images disponibles sur le serveur utiliser la commande :
Sur cockpit, on peut aussi voir l’image disponible.
Avant de démarrer notre conteneur, on va créer un dossier qui va stocker les données (base de données) sur notre serveur (hôte), car si on ne fait pas ça, le jour où vous allez reconstruire l’image (mise à jour par exemple), on va perdre les données.
Dans le dossier /var/ créer un dossier mariadb_c1.
sudo mkdir /var/mariadb_c1
Maintenant, on va créer notre conteneur basé sur l’image que l’on a téléchargé.
Pour créer le conteneur, utiliser la ligne de code ci-dessous :
Le retour de cette commande si tout se passe bien est un hash qui est l’ID du conteneur.
Je vais maintenant vous expliquer la commande :
docker run
: cette commande permet de démarrer un conteneur avec plusieurs paramètres.-p 3306:3306
: ce paramètre permet d’exposer le port 3306 de notre hôte et de le lier au port 3306 de notre conteneur.-v /var/mariadb_c1:/var/lib/mysql
: le paramètre -v permet de rediriger le dossier d’un conteneur vers un dossier qui est sur l’hôte.--name mariadb_c1
: permet de nommer de le conteneur, si le paramètre est absent, un nom aléatoire est donnée.--restart always
: permet de faire en sortie que le conteneur démarre à chaque fois.- –
e MARIADB_ROOT_PASSWORD=Azerty123
: -e permet de déclarer une variable d’environnement du conteneur, ici MARIADB_ROOT_PASSWORD qui va avoir la valeur Azerty123. Ce paramètre va définir le mot de passe du compte root de mariadb à Azerty123 - -d : permet de faire fonctionner le conteneur en arrière-plan
mariadb:10.5
: correspond à l’image qui va être utilisé pour notre conteneur, il est placé à la fin de la commande docker run.
Pour rendre plus lisible la ligne de commande, il est possible de l’écrire comme ça :
Pour vérifier que le conteneur fonctionne, on peut voir les conteneurs démarrés avec la commande :
sudo docker ps
Pour afficher tous les conteneurs démarrés ou éteints :
sudo docker ps -a
SI vous avez installé cockpit, on peut aussi voir notre conteneur mariadb.
Dans les détails du conteneur, on retrouve les différents paramètres passer à la commande docker run
.
Il est important de noter la commande utiliser pour relancer le conteneur en cas de besoin ou de mise à jour de l’image avec de relancer une nouvelle image avec les même paramètres et conserver la configuration de l’application.
Maintenant, on va aller voir le dossier /var/mariadb_c1/
pour voir ce qui se trouve dedans.
cd /var/mariadb_c1
ll
On retrouve les fichiers et dossiers des bases de données de notre conteneur.
Vous savez maintenant comment créer un conteneur à partir d’une image télécharger sur le hub docker.
Exercice
Pour finir ce chapitre, je vous propose un petit exercice :
- Faire tourner un second conteneur MariaDB 10.5, qui sera publié sur le port 3307 de l’hôte, il aura un stockage persistant des fichiers de base de données dans le dossier
/var/mariadb_c2/
, il devrait également fonctionner de façon autonome et être toujours démarré.