đŸ’» TP : CrĂ©er et manipuler des conteneurs

1. Présentation et objectifs

L’objectif de ce TP est d’apprendre Ă  utiliser Podman pour crĂ©er et manipuler des conteneurs de maniĂšre interactive Ă  partir d’images de conteneurs prĂ©-existantes, de gĂ©rer le cycle de vie d’un conteneur, et de manuellement dĂ©ployer des petits programmes au sein des dits conteneurs.

Lorsque le sujet de TP vous propose d’exĂ©cuter une commande, il est demandĂ© que vous arriviez Ă  comprendre tout ce que comporte cette commande. Prenez le temps de bien lire et dĂ©cortiquer chaque commande qui vous est proposĂ©e, et n’hĂ©sitez pas Ă  poser des questions.

2. Connexion au serveur de déploiement

Toute la suite du TP devra ĂȘtre effectuĂ©e sur l’environnement de dĂ©ploiement. Vous pouvez donc commencer par ouvrir un terminal et ouvrir une session SSH Ă  distance sur ce dernier, comme vous avez appris Ă  le faire dans le đŸ’» TP : DĂ©couverte de l’infrastructure et des outils.

Il est tout Ă  fait possible d’ouvrir plusieurs terminaux en parallĂšle. Vous pouvez ainsi, si nĂ©cessaire ouvrir plusieurs connexions vers le serveur de dĂ©ploiement. Cela peut ĂȘtre utile par exemple pour lancer un conteneur dans un premier terminal (avec run), et l’observer (avec ps ou logs) ou le manipuler (avec stop ou rm) depuis un second. Vous pouvez Ă©galement garder un autre terminal ouvert pour exĂ©cuter des commandes sur votre poste Linux.

3. Tutoriel : un premier conteneur Ubuntu

3.1. Exécution du conteneur

Dans cette premiĂšre partie, on se propose de crĂ©er un conteneur qui n’embarque aucun logiciel particulier, et qui permet simplement d’interagir avec un systĂšme d’exploitation restreint Linux classique. On choisit pour cela d’utiliser l’image de conteneur officielle Ubuntu.

Dans un premier terminal connectĂ© au serveur de dĂ©ploiement, exĂ©cutez la commande suivante :

[sur l’environnement de dĂ©ploiement distant]
$ podman container run --name mon_premier_conteneur --tty --interactive docker.io/ubuntu:24.04
Les options --tty et --interactive nous permettent de lancer le conteneur en mode interactif, de maniÚre à pouvoir saisir des commandes au clavier une fois le conteneur créé.

Cette commande indique Ă  Podman de crĂ©er un nouveau conteneur Ă  partir de l’image de conteneur ayant pour rĂ©fĂ©rence docker.io/ubuntu:24.04, ce qui correspond Ă  l’image :

  • situĂ©e sur le registre de conteneur docker.io (autrement dit, le Docker Hub)

  • nommĂ©e ubuntu

  • avec pour Ă©tiquette 24.04, ce qui correspond Ă  la version d’Ubuntu souhaitĂ©e.

Une fois ce conteneur créé, Podman va automatiquement exĂ©cuter le point d’entrĂ©e de l’image. Dans le cas de l’image Ubuntu choisie, ce point d’entrĂ©e est l’interprĂ©teur de commandes Bash, Ă  savoir le mĂȘme que celui que vous utilisez par dĂ©faut dans le terminal sur un poste informatique Linux de l’UniversitĂ©.

Ainsi, une fois le conteneur lancé, on se retrouve face à un invite de commande (ou prompt) qui nous invite à exécuter des commandes.

Vous pouvez cĂ©lĂ©brer cela par une commande comme :

[sur le conteneur]
# echo "Bonjour depuis un conteneur !"

qui affichera Bonjour depuis un conteneur ! de l’interprĂ©teur de commandes du conteneur. Ce n’est pas grand chose, mais c’est un dĂ©but !

Vous pouvez ensuite vĂ©rifier que ce nouvel environnement possĂšde bien Ubuntu 24.04 comme systĂšme d’exploitation, Ă  l’aide de la commande suivante (dĂ©jĂ  vue dans le TP prĂ©cĂ©dent) :

[sur le conteneur]
# cat /etc/os-release
Malheureusement la commande hostnamectl, plus informative que celle ci-dessus, n’est gĂ©nĂ©ralement pas prĂ©-installĂ©e dans les systĂšmes d’exploitation restreints des conteneurs.

Enfin, il est utile de vĂ©rifier que votre conteneur est bien créé et en cours d’exĂ©cution. Pour cela, Ă  l’aide d’un second terminal, exĂ©cutez la commande :

[sur l’environnement de dĂ©ploiement distant]
$ podman container list

Vous verrez votre conteneur mon_premier_conteneur apparaĂźtre.

3.2. Installation d’un paquet comme administrateur du conteneur

Hourra, je suis root !
— Étudiant exĂ©cutant son premier conteneur

On peut voir dans le prompt affichĂ© que l’utilisateur actif dans le conteneur s’appelle root, autrement dit un utilisateur qui possĂšde les droits administrateur !

Mais comment est-ce possible, alors que vous n’avez normalement jamais de tels droits sur une poste informatique de l’UniversitĂ© ?

Un conteneur est un environnement diffĂ©rent et dissociĂ© de l’environnement de dĂ©ploiement sur lequel vous travaillez (mĂȘme si hĂ©bergĂ© par ce dernier), et fonctionne via un systĂšme d’exploitation restreint sur lequel vous possĂ©dez tous les droits. Au sein de ce systĂšme exploitation restreint, vous ĂȘtes par dĂ©faut root, et vous pouvez ainsi y faire ce que vous souhaitez, mĂȘme si vous n’ĂȘtes pas root dans le systĂšme d’exploitation de l’environnement de dĂ©ploiement.

Par exemple, les commandes suivantes permettent, depuis un environnement Ubuntu, d’utiliser le gestionnaire de paquets apt pour installer un utilitaire appelĂ© cowsay (utilitaire trĂšs utile permettant, dans un terminal, de dessiner une vache qui parle) :

[sur le conteneur]
$ apt update
$ apt install cowsay

Sur votre poste Linux de l’UniversitĂ©, si vous ouvrez un nouveau terminal et que vous exĂ©cutez ces commandes, alors une erreur de type Permission denied sera affichĂ©e, car vous n’avez pas les droits administrateurs.

En revanche, si vous exĂ©cutez ces mĂȘmes commandes depuis votre conteneur, cela fonctionnera, et l’utilitaire cowsay sera installĂ© dans le mini-environnement. Vous pouvez cĂ©lĂ©brer cette installation en exĂ©cutant cette commande dans votre conteneur, et en admirant le rĂ©sultat :

[sur le conteneur]
# /usr/games/cowsay "Bonjour depuis un conteneur !"

3.3. Copier un fichier dans le conteneur

Nous souhaitons dĂ©sormais personnaliser cowsay avec un fichier de configuration qui irait remplacer le dessin de vache par un nouveau dessin avec un autre personnage. Cela peut ĂȘtre accompli Ă  l’aide de l’option -f de cowsay, qui permet d’indiquer Ă  cowsay de lire un fichier de configuration spĂ©cifique.

Mais malheureusement le conteneur que vous avez créé est en vase clos : votre conteneur ne peut pas accĂ©der aux fichiers de votre environnement de dĂ©ploiement, et toutes les commandes que vous exĂ©cutez ne peuvent influencer que l’intĂ©rieur du conteneur.

Heureusement, nous avons vu qu’il Ă©tait possible d’Ă©changer des fichiers avec un conteneur Ă  l’aide de la commande podman container cp. Voyons comment utiliser cette commande pour transfĂ©rer un fichier vers notre conteneur Ubuntu.

  1. Commencez par préparer un fichier texte appelé r2d2.cow sur votre poste de travail, et contenant exactement ceci :

    Fichier r2d2.cow
    $the_cow = <<EOC;
             $thoughts      ___
              $thoughts    /() \\
               $thoughts _|_____|_
                | | === | |
                |_|  O  |_|
                 ||  O  ||
                 ||__*__||
                |~ \\___/ ~|
                /=\\ /=\\ /=\\
                [_] [_] [_]
    EOC
  2. Ouvrez un nouveau terminal qui va vous servir Ă  effectuer le transfert de fichier vers le conteneur, tout en gardant ouvert votre second terminal dans lequel vous ĂȘtes encore dans votre conteneur.

  3. TransfĂ©rez le fichier r2d2.cow dans un rĂ©pertoire ~/tp-conteneurs/ sur l’environnement de dĂ©ploiement Ă  l’aide de l’outil scp.

  4. ExĂ©cutez ensuite la commande suivante pour transfĂ©rer ce fichier depuis l’environnement de dĂ©ploiement, vers le rĂ©pertoire /root au sein du conteneur Ubuntu que nous avons nommĂ© mon_premier_conteneur lors de sa crĂ©ation :

    [sur l’environnement de dĂ©ploiement distant]
    $ podman container cp ~/tp-conteneurs/r2d2.cow mon_premier_conteneur:/root/

Vous pouvez dĂ©sormais vous rendre Ă  nouveau dans le terminal que vous aviez laissĂ© de cĂŽtĂ© dans lequel vous ĂȘtes dans le conteneur Ubuntu, et vous pouvez utiliser le fichier nouvellement ajoutĂ© dans le conteneur :

  1. Vérifiez que le fichier est bien arrivé dans le répertoire /root :

    [sur le conteneur]
    # cd /root
    # ls
  2. ExĂ©cutez cowsay en lui indiquant d’utiliser le fichier de configuration nouvellement ajoutĂ© au conteneur :

    [sur le conteneur]
    # /usr/games/cowsay -f /root/r2d2.cow "Beep. boop."

Vous obtenez normalement un superbe dessin en ASCII-art montrant R2-D2 s’exprimant Ă  sa maniĂšre đŸ€–.

3.4. Stopper, lister et supprimer le conteneur

Pour terminer l’exĂ©cution de l’interprĂ©teur de commandes du conteneur, vous pouvez faire :

[sur le conteneur]
# exit

Le conteneur se retrouve alors stoppĂ© − puisque son exĂ©cution est terminĂ©e − et vous arrivez de retour dans l’environnement d’accueil, Ă  savoir le serveur de dĂ©ploiement.

Mais le conteneur n’a pas disparu pour autant. Pour lister les conteneurs existants, on peut faire :

[sur l’environnement de dĂ©ploiement distant]
$ podman container list --all
L’option --all permet d’afficher les conteneurs qui sont stoppĂ©s, et pas seulement les conteneurs en cours d’exĂ©cution.

On voit alors apparaßtre le conteneur Ubuntu avec pour état Exited.

On peut supprimer ce conteneur avec :

[sur l’environnement de dĂ©ploiement distant]
$ podman container rm <identifiant>

Puis, si on reliste les conteneurs, il aura normalement disparu.

Nous venons ici d’illustrer le principe du cycle de vie d’un conteneur, tel que prĂ©sentĂ© dans le chapitre dĂ©diĂ© Ă  la crĂ©ation de conteneurs. N’hĂ©sitez pas Ă  aller y revoir la machine Ă  Ă©tats qui dĂ©crit les diffĂ©rents Ă©tats et transititions possibles d’un conteneur.

4. Exercice : Asciidoctor depuis un conteneur Alpine

4.1. ÉnoncĂ©

On se donne l’objectif d’exĂ©cuter un conteneur Ă  partir de l’image officielle Alpine Linux, puis d’installer le logiciel Asciidoctor au sein du conteneur.

Alpine Linux est un systĂšme d’exploitation Linux diffĂ©rent de Ubuntu.

Asciidoctor est un logiciel qui permet de convertir un fichier Ă©crit Ă  l’aide du langage Asciidoc (similaire au langage Markdown), afin de produire un document HTML en sortie.

Exemple 1. Simple fichier Asciidoctor et rendu HTML correspondant

On Ă©crit le fichier financiers.adoc avec le langage Asciidoc :

Contenu financiers.adoc
= Financiers aux amandes

== Ingrédients

- 200gr de yaourt végétal
- 1 pincée de sel
- 145g sucre
- 5gr de poudre Ă  lever
- 60gr de huile de tournesol
- 100gr de farine T45
- 120gr de poudre d'amande
- amandes effilées
- margarine végétale

== Étapes

. Dans un récipient, fouettez le yaourt avec le sucre.
. Ajoutez l'huile, la farine, la poudre d'amandes, le sel et la poudre Ă  lever.
La pĂąte obtenue doit ĂȘtre lisse.
. Graissez un moule à financiers avec un peu de margarine végétale et versez-y la pùte.
Parsemez d'amandes effilées.
. Enfournez pour 20 à 25 minutes à 180 °C. Les financiers doivent avoir une belle couleur dorée.

Si on utilise le logiciel Asciidoctor sur ce fichier, on obtient le HTML suivant (une fois ouvert dans un navigateur) :

asciidoc financiers html

Asciidoctor s’utilise depuis un terminal Ă  l’aide d’une commande qui peut prendre la forme suivante :

$ asciidoctor mondocument.adoc

et qui produit en résultat un fichier mondocument.html

Pour notre conteneur, on fait les choix suivants :

  • On utilisera comme image de base l’image officielle Alpine disponible sur le Docker Hub. En lisant la documentation de l’image, on en extrait les informations utiles suivantes :

    • L’image Ă©tant sur le Docker Hub, le registre de conteneur est accessible via l’adresse docker.io.

    • Le nom de l’image est simplement alpine.

    • Une Ă©tiquette valide pour cette image est 3.22.

  • On installera Asciidoctor simplement Ă  l’aide de l’utilitaire apk disponible sur Alpine Linux. Avec apk, Asciidoctor peut ĂȘtre installĂ© Ă  l’aide du paquet appelĂ© asciidoctor. apk s’utilise principalement avec deux actions :

    • apk update permet de rĂ©cupĂ©rer la liste des paquets disponibles (similaire Ă  apt update),

    • apk add <nom du paquet> permet d’installer un nouveau paquet (similaire Ă  apt install).

Tout comme l’image Ubuntu, le point d’entrĂ©e de l’image Alpine est un interprĂ©teur de commande, Ă  savoir sh, qui a un comportement identique Ă  Bash.

4.2. Questions

  1. PrĂ©parez et exĂ©cutez une commande pour crĂ©er le conteneur Alpine souhaitĂ© (cf l’Ă©noncĂ© plus haut), avec les options nĂ©cessaires pour lui donner le nom alpine_asciidoctor et permettre les interactions clavier avec le conteneur. On utilisera l’image de conteneur accessible par l’Ă©tiquette 3.22.

  2. Une fois dans le conteneur, exĂ©cutez les commandes nĂ©cessaires pour installer asciidoctor. VĂ©rifiez que l’outil est bien installĂ© en l’exĂ©cutant avec l’option --version.

  3. Sur votre poste de travail, préparez un fichier financiers.adoc contenant la recette de financiers montrée en exemple plus haut.

  4. À l’aide d’un second terminal, copiez financiers.adoc au sein de votre conteneur.

  5. Dans votre conteneur, exécutez asciidoctor de maniÚre à convertir le fichier financiers.adoc en HTML. Utilisez ls pour vérifier que vous avez bien produit un fichier financiers.html.

  6. À l’aide d’un second terminal, copiez le fichier financiers.html depuis conteneur, vers l’environnement de dĂ©ploiement.

    Pour copier un fichier depuis un conteneur, on utilise Ă  nouveau podman container cp.
  7. Vérifiez avec ls que vous avez bien récupéré le fichier qui était dans le conteneur.

  8. Quittez le conteneur, puis supprimez le.

  9. Selon vous, qu’est devenu le fichier financiers.adoc que vous aviez copiĂ© au sein du conteneur ?

5. Tutoriel : utiliser un conteneur pour dĂ©ployer replace_string

Jusqu’ici nous avons surtout vu comment crĂ©er des conteneurs et installer des logiciels prĂ©-existants dans ces conteneurs. Ces logiciels pre-existants Ă©taient Ă  chaque fois disponible sous forme de paquets fournis par les systĂšmes d’exploitations que nous avons considĂ©rĂ©, et donc trĂšs faciles Ă  installer.

Cependant, que faire lorsqu’on dĂ©veloppe fraichement un logiciel et qu’il n’est donc pas directement installable par un systĂšme d’exploitation ? Dans la suite de ce TP on se concentrera sur des scĂ©narios de ce type, dans lequels nous avons accĂšs au code source et Ă  la documentation technique d’un logiciel dĂ©veloppĂ©, mais oĂč ce logiciel n’est pas disponible sous forme de paquet facilement installable dans un systĂšme d’exploitation.

Dans le prĂ©sent tutoriel, nous allons refaire le dĂ©ploiement de l’outil replace_string vu dans le TP prĂ©cĂ©dent. MĂȘme si nous avions rĂ©ussi Ă  exĂ©cuter cet outil dans l’environnement de dĂ©ploiement, nous allons voir ici comment re-faire ce dĂ©ploiement Ă  l’aide d’un conteneur. Ce tutoriel sera prĂ©sentĂ© en deux versions :

  1. d’abord une version oĂč on part d’une image de base avec le systĂšme d’exploitation Ubuntu,

  2. ensuite une version oĂč on part d’une image de base avec Python prĂ©-installĂ©.

5.1. Stratégie 1 : depuis une image de base Ubuntu

Le README de replace_string nous indique que la seule dépendance requise est un interpréteur Python en version 3. Il nous faut donc préparer un conteneur dans lequel cette dépendance est disponible.

Une premiĂšre stratĂ©gie possible est de prĂ©parer un conteneur Ă  partir d’une image de base contenant un systĂšme d’exploitation retreint, puis d’installer un interprĂ©teur Python dans cet environnement, et enfin d’installer notre logiciel.

  1. Commençons par créer un nouveau conteneur sur une base Ubuntu, avec les options -ti (équivaut à --tty --interactive) pour permettre les interactions au clavier :

    [sur l’environnement de dĂ©ploiement distant]
    $ podman container run -ti --name replace_string_container docker.io/ubuntu:24.04
    Nous aurions pu choisir un autre systĂšme d’exploitation que Ubuntu, avec pour seule contrainte que Python doit ĂȘtre facilement installable dans le systĂšme d’exploitation choisi.
  2. Dans ce conteneur, installons un interprĂ©teur Python 3 Ă  l’aide du gestionnaire de paquets apt, en sachant que le paquet Python 3 s’appelle python3 :

    [sur le conteneur]
    # apt update
    # apt install -y python3
    Il est possible qu’apt vous demande de rĂ©pondre Ă  des questions concernant le fuseau horaire. Ces questions sont causĂ©es par l’installation d’une dĂ©pendance transitive de python3 appelĂ©e tzdata, une bibliothĂšque pour gĂ©rer les fuseaux horaires. Vous pouvez rĂ©pondre n’importe quoi Ă  ces questions, cela n’impactera pas le TP.
  3. À l’aide d’un second terminal, copiez replace_string.py dans le conteneur, ainsi qu’un fichier texte exemple qui servira Ă  tester l’outil (reprenez par exemple song.txt du README, comme dans le TP prĂ©cĂ©dent).

  4. Dans le conteneur, testez replace_string.py sur votre fichier exemple.

  5. Si tout est bon, quittez votre conteneur, puis supprimez-le une fois que vous avez terminé.

5.2. Stratégie 2 : depuis une image de base Python

Bien que la premiĂšre stratĂ©gie fonctionne sans problĂšme, il est parfois possible de gagner du temps en choisissant l’image de base la plus adaptĂ©e. Comme vu Ă  la toute fin du chapitre 📘 CrĂ©er et manipuler des conteneurs, il existe des images dĂ©diĂ©es Ă  des technologies, c’est Ă  dire qui viennent avec le nĂ©cessaire pour travailler avec un certain langage de programmation ou un certain framework logiciel.

Et nous avons de la chance : on peut trouver sur le registre Docker Hub une image de conteneur officielle pour le langage Python ! Cette image possÚde déjà un interpréteur Python 3 pré-installé et pré-configuré, ce qui nous permet de sauter cette étape.

Refaisons l’exercice avec ce nouveau type d’image de base :

  1. On crĂ©e un nouveau conteneur cette fois sur une base Python ; on utilise l’Ă©tiquette 3-slim pour s’assurer d’avoir Python en version 3 dans une image lĂ©gĂšre, et on met bash comme point d’entrĂ©e explicite pour Ă©viter de dĂ©marrer le conteneur dans l’interprĂ©teur Python :

    [sur l’environnement de dĂ©ploiement distant]
    $ podman container run -ti --name replace_string_container_v2 docker.io/python:3-slim bash
  2. À l’aide d’un second terminal, copiez replace_string.py dans le conteneur, ainsi qu’un fichier texte exemple qui servira Ă  tester l’outil (reprenez par exemple song.txt du README, comme dans le TP prĂ©cĂ©dent).

  3. Dans le conteneur, testez replace_string.py sur votre fichier exemple.

  4. Si tout est bon, quittez votre conteneur, puis supprimez-le une fois que vous avez terminé.

6. Exercice : utiliser des conteneurs pour dĂ©ployer diffĂ©rents programmes

6.1. compress_file

Travail Ă  effectuer:

  1. Lisez bien Ă  nouveau la documentation fournie dans le README.

  2. PrĂ©parez un conteneur avec la dĂ©pendance requise (en faisant bien attention Ă  la version demandĂ©e !), avec un nom et avec les options permettant les interactions clavier.

  3. Dans votre conteneur, vĂ©rifiez que votre dĂ©pendance est bien installĂ©e (pensez Ă  utiliser l’option --version).

  4. Copiez compress_file.py sur le conteneur, puis testez-le sur un fichier de votre choix.

  5. S’il n’y a pas d’erreur, c’est bon ! Quittez le conteneur puis supprimez-le lorsque vous avez terminĂ©.

6.2. print_colored_string

Travail Ă  effectuer:

  1. Lisez bien Ă  nouveau la documentation fournie dans le README.

  2. PrĂ©parez un conteneur, avec un nom, avec les options permettant les interactions clavier, et avec les dĂ©pendances requises, en sachant qu’une bibliothĂšque python peut ĂȘtre installĂ©e Ă  l’aide de la commande:

    # pip install <nom de la librarie>
  3. Copiez print_colored_string.py sur le conteneur, puis testez-le sur une chaĂźne de caractĂšres de votre choix.

  4. S’il n’y a pas d’erreur, c’est bon ! Quittez le conteneur puis supprimez-le lorsque vous avez terminĂ©.

6.3. TicTacToe

Quelques informations pour vous aider :

  • Il existe une image de base docker.io/eclipse-temurin qui contient les outils de base pour le dĂ©veloppement et l’exĂ©cution de programmes Java (commandes javac et java notamment).

  • Une Ă©tiquette valide pour cette image est 21-jdk, qui permet d’avoir Java en version 21 et avec tous les outils de dĂ©veloppement (JDK).

  • Cette image de base a pour point d’entrĂ©e l’interprĂ©teur de commandes Java appelle jshell. Malheureusement, jshell ne permet pas d’aller exĂ©cuter un fichier Java spĂ©cifique, et est donc peu commode pour exĂ©cuter un conteneur de maniĂšre interactive.

Travail Ă  effectuer:

  1. Lisez bien Ă  nouveau la documentation fournie dans le README.

  2. Préparez un conteneur, avec un nom, avec les options permettant les interactions clavier, et avec la dépendance requise.

    Si besoin, n’hĂ©sitez pas Ă  dĂ©marrer votre conteneur avec un point d’entrĂ©e plus adaptĂ© Ă  vos besoins, par exemple bash.
  3. Dans votre conteneur, vĂ©rifiez que votre dĂ©pendance est bien installĂ©e (pensez Ă  utiliser l’option --version).

  4. Copiez TicTacToe.java sur le conteneur, puis testez-le.

  5. S’il n’y a pas d’erreur, c’est bon ! Quittez le conteneur puis supprimez-le lorsque vous avez terminĂ©.

6.4. economic_dispatch

Vous devez dĂ©ployer l’outil economic_dispatch, qui n’a pas Ă©tĂ© vu au TP prĂ©cĂ©dent.

Quelques informations pour vous aider :

  • Il existe une image de base docker.io/julia qui contient les outils de base pour le dĂ©veloppement et l’exĂ©cution de programmes Julia.

  • Une Ă©tiquette valide pour cette image est 1.11-trixie, qui permet d’avoir Julia en version 1.11.

  • Cette image de base a pour point d’entrĂ©e l’interprĂ©teur de commandes Julia, peu commode pour exĂ©cuter un conteneur de maniĂšre interactive.

  • Il est possible d’installer une bibliothĂšque Julia avec la commande suivante:

    # julia -e 'import Pkg; Pkg.add("<nom de la bibliothĂšque>")'

Travail Ă  effectuer:

  1. Lisez bien Ă  nouveau la documentation fournie dans le README.

  2. Préparez un conteneur, avec un nom, avec les options permettant les interactions clavier, et avec la dépendance requise.

    À nouveau, si besoin, n’hĂ©sitez pas Ă  dĂ©marrer votre conteneur avec un point d’entrĂ©e plus adaptĂ© Ă  vos besoins, par exemple bash.
  3. Dans votre conteneur, vĂ©rifiez que votre dĂ©pendance est bien installĂ©e (pensez Ă  utiliser l’option --version).

  4. Copiez economic_dispatch.jl sur le conteneur, ainsi qu’un fichier de test reprenant l’exemple donnĂ© dans le README, puis testez l’outil.

  5. ExĂ©cutez l’outil Ă  l’aide du fichier test, et observez que vous obtenez les mĂȘmes rĂ©sultats que ceux montrĂ©s dans le README.

  6. S’il n’y a pas d’erreur, c’est bon ! Quittez le conteneur puis supprimez-le lorsque vous avez terminĂ©.

7. Faire le ménage sur le serveur de déploiement

Une fois tous ces tutoriels et exercices terminĂ©s, il est bien de faire un peu de mĂ©nage sur l’environnement de dĂ©ploiement ! Pour cela, rĂ©fĂ©rez-vous Ă  la section dĂ©diĂ©e dans la notice.