{"id":7232,"date":"2026-09-08T06:00:38","date_gmt":"2026-09-08T05:00:38","guid":{"rendered":"https:\/\/www.blaess.fr\/christophe\/?p=7232"},"modified":"2026-09-02T22:46:22","modified_gmt":"2026-09-02T21:46:22","slug":"deployer-des-containers-sur-eris-linux","status":"publish","type":"post","link":"https:\/\/www.blaess.fr\/christophe\/2026\/09\/08\/deployer-des-containers-sur-eris-linux\/","title":{"rendered":"D\u00e9ployer des containers sur Eris Linux"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignright size-medium is-resized\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/09\/thumbnail-03-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"248\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/09\/thumbnail-03-1-300x248.png\" alt=\"\" class=\"wp-image-7637\" style=\"aspect-ratio:1.2006732473225064;width:289px;height:auto\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/09\/thumbnail-03-1-300x248.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/09\/thumbnail-03-1.png 679w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Nous avons vu dans les articles pr\u00e9c\u00e9dents en quoi consistait<a href=\"https:\/\/www.blaess.fr\/christophe\/2026\/08\/25\/eris-linux\/\" data-type=\"post\" data-id=\"7123\"> la distribution industrielle Eris Linux<\/a> et comment l&rsquo;<a href=\"https:\/\/www.blaess.fr\/christophe\/2026\/09\/01\/installer-eris-linux-sur-un-raspberry-pi-5\/\" data-type=\"post\" data-id=\"7066\">installer ais\u00e9ment sur une carte du commerce, un Raspberry Pi 5<\/a> en l&rsquo;occurrence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;avais indiqu\u00e9 que j&rsquo;aimais comparer Eris Linux \u00e0 <strong>un vaisseau porte-containers<\/strong>. C&rsquo;est le moment de lui faire jouer ce r\u00f4le et d&#8217;embarquer ses premiers containers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous verrons dans le prochain article comment cr\u00e9er son propre container embarquant un code m\u00e9tier personnalis\u00e9. Dans un premier temps, nous allons nous concentrer sur des <strong>containers de d\u00e9monstration<\/strong> disponibles directement pour toutes les cartes support\u00e9es par Eris Linux.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"has-very-light-gray-to-cyan-bluish-gray-gradient-background has-background wp-block-paragraph\"><strong>Dur\u00e9e&nbsp;:<\/strong> environ 20 minutes pour tester les containers indiqu\u00e9s ci-dessous.<br><strong>Mat\u00e9riel n\u00e9cessaire&nbsp;:<\/strong><br>&#8211; une carte support\u00e9e par Eris Linux sur laquelle Eris est install\u00e9,<br>&#8211; un acc\u00e8s r\u00e9seau pour que la carte puisse joindre le Device Manager,<br>&#8211; un ordinateur avec acc\u00e8s r\u00e9seau pour communiquer avec le Device Manager.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois l&rsquo;installation d&rsquo;Eris achev\u00e9e, notre carte appara\u00eet dans le <em><strong>Device Manager<\/strong><\/em>, comme nous l&rsquo;avions vu dans l&rsquo;article pr\u00e9c\u00e9dent.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-01-1024x733.png\" alt=\"\" class=\"wp-image-7240\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-01-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-01-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-01-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-01.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 1 &#8211; <em>Onglet \u00ab\u00a0My devices\u00a0\u00bb du Device Manager.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Pour le moment les <strong>quatre <em>slots<\/em><\/strong> pouvant contenir des containers sont vides (voir la table en haut \u00e0 droite de l&rsquo;\u00e9cran). Cliquons sur un des boutons repr\u00e9sentant un container. La fen\u00eatre suivante appara\u00eet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-02-1024x733.png\" alt=\"\" class=\"wp-image-7243\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-02-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-02-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-02-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-02.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 2 &#8211; <em>S\u00e9lection d&rsquo;un container.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cette fen\u00eatre permet de choisir parmi les containers disponibles pour ce mod\u00e8le de carte, celui que nous souhaitons installer dans le slot concern\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c0 noter que <strong>la configuration des slots s\u2019effectue au niveau du groupe<\/strong> : le container s\u00e9lectionn\u00e9 sera donc d\u00e9ploy\u00e9 sur tous les \u00e9quipements appartenant \u00e0 ce groupe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En cliquant sur la liste d\u00e9roulante, on voit les containers de d\u00e9monstration appara\u00eetre&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-03-1024x733.png\" alt=\"\" class=\"wp-image-7244\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-03-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-03-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-03-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-03.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 3 &#8211; <em>Liste des containers disponibles.<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Containers de d\u00e9monstration et test<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les containers de d\u00e9monstration sont propos\u00e9s syst\u00e9matiquement pour toutes les cartes support\u00e9es par Eris Linux, cela permet entre autres de valider le bon fonctionnement de l&rsquo;interface de d\u00e9veloppement du code applicatif (<strong>API<\/strong>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Toutefois, en usage courant, pour des \u00e9quipements d\u00e9ploy\u00e9s, la pr\u00e9sence des containers de d\u00e9monstration peut s&rsquo;av\u00e9rer plus perturbante qu&rsquo;utile. Pour cela une option \u00ab\u00a0<em>Include demo containers in the list<\/em>\u00a0\u00bb est pr\u00e9sente dans le menu de configuration du groupe d&rsquo;\u00e9quipements. Activ\u00e9e par d\u00e9faut, cette option peut \u00eatre d\u00e9coch\u00e9e si on le souhaite.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-04.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-04-1024x733.png\" alt=\"\" class=\"wp-image-7250\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-04-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-04-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-04-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-04.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 4 &#8211; <em>Option de masquage des containers de d\u00e9monstration.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce cas, seuls les containers applicatifs d\u00e9velopp\u00e9s sp\u00e9cifiquement seront visibles. Dans la fen\u00eatre ci-dessous les containers de d\u00e9monstration ont disparu.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-05.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-05-1024x733.png\" alt=\"\" class=\"wp-image-7251\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-05-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-05-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-05-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-05.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 5 &#8211; <em>Liste de containers sans ceux de d\u00e9monstration.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e9activons l&rsquo;option qui nous permet de voir les containers de d\u00e9monstration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici ceux propos\u00e9s au moment de l&rsquo;\u00e9criture de cet article. Il est tr\u00e8s probable que d&rsquo;autres d\u00e9monstrations seront disponibles dans l&rsquo;avenir&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00ab\u00a0<em><strong>LED trigger access<\/strong><\/em>\u00a0\u00bb : ce container contient un script shell qui s\u00e9lectionne alternativement les \u00ab\u00a0<em>triggers<\/em>\u00a0\u00bb (d\u00e9clencheurs) allumant et \u00e9teignant les LEDs de la carte. Toutes les quinze secondes, les LEDs adopteront un comportement parmi \u00ab\u00a0<em>clignotement avec une p\u00e9riode d&rsquo;une seconde<\/em>\u00a0\u00bb , \u00ab\u00a0<em>allumage permanent<\/em>\u00a0\u00bb , \u00ab\u00a0<em>clignotement en battement de c\u0153ur<\/em>\u00a0\u00bb et \u00ab\u00a0<em>extinction compl\u00e8te<\/em>\u00ab\u00a0. Ce container n\u00e9cessite un acc\u00e8s au mat\u00e9riel physique (les LEDs) et est donc prot\u00e9g\u00e9 par un mot de passe qu&rsquo;il faut saisir pour son installation. Dans le cadre de cette d\u00e9monstration, le mot de passe (rappel\u00e9 dans la description du container) est \u00ab\u00a0<code><strong>eris<\/strong><\/code>\u00ab\u00a0.<\/li>\n\n\n\n<li>\u00ab\u00a0<em><strong>Turn all LEDs off<\/strong><\/em>\u00a0\u00bb : lorsqu&rsquo;on retire le container pr\u00e9c\u00e9dent, les LEDs conservent le dernier comportement configur\u00e9 (par exemple un clignotement). Si on veut \u00e9teindre compl\u00e8tement toutes les LEDs, il est possible de charger ce container. Comme le pr\u00e9c\u00e9dent, il est prot\u00e9g\u00e9 par le mot de passe \u00ab\u00a0<code><strong>eris<\/strong><\/code>\u00ab\u00a0.<\/li>\n\n\n\n<li>\u00ab\u00a0<em><strong>API Test using console HMI<\/strong><\/em>\u00a0\u00bb : un container qui installe un serveur sur le port TCP\/IP 10000. Une connexion sur ce port (avec un outil comme <code>telnet<\/code>, <code>screen<\/code>, <code>nc<\/code>, etc.) donne acc\u00e8s \u00e0 une IHM minimale permettant de tester une partie de l&rsquo;API de programmation d&rsquo;Eris Linux. Nous en verrons un exemple plus loin.<\/li>\n\n\n\n<li>\u00ab\u00a0<em><strong>API Test using Web HMI<\/strong><\/em>\u00a0\u00bb : ce container ouvre un serveur Web sur son port 80 redirig\u00e9 sur le port 8080 de l&rsquo;\u00e9quipement. On peut s&rsquo;y connecter \u00e0 l&rsquo;aide de n&rsquo;importe quel navigateur en utilisant l&rsquo;URL \u00ab\u00a0<code>http:\/\/&lt;device IP address&gt;:8080\/<\/code>\u00a0\u00bb puis utiliser les menus propos\u00e9s pour tester l&rsquo;API d&rsquo;Eris Linux.<\/li>\n\n\n\n<li>\u00ab\u00a0<em><strong>API Test using Qt-based HMI<\/strong><\/em>\u00a0\u00bb : un container affichant une application graphique bas\u00e9e sur la biblioth\u00e8que Qt 6 pour \u00e9valuer l&rsquo;API de programmation d&rsquo;Eris Linux. Ceci n\u00e9cessite bien s\u00fbr que l&rsquo;\u00e9quipement sur lequel on installe le container dispose d&rsquo;un \u00e9cran graphique.<\/li>\n\n\n\n<li>\u00ab\u00a0<em><strong>SSH Server on port 2222<\/strong><\/em>\u00a0\u00bb : ce container dans lequel s&rsquo;ex\u00e9cute un serveur SSH auquel on peut acc\u00e9der sur le port TCP\/IP <code>2222<\/code> de l&rsquo;\u00e9quipement. On peut se connecter en utilisant le nom de login \u00ab\u00a0<code>eris<\/code>\u00a0\u00bb et le mot de passe \u00ab\u00a0<code>linux<\/code>\u00a0\u00bb ou en utilisant le login \u00ab\u00a0<code>root<\/code>\u00a0\u00bb et le mot de passe \u00ab\u00a0<code>root<\/code>\u00ab\u00a0.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Container de test d&rsquo;acc\u00e8s aux LEDs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Commen\u00e7ons par installer le container qui teste l&rsquo;acc\u00e8s aux LEDs de la carte.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-06.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-06-1024x733.png\" alt=\"\" class=\"wp-image-7252\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-06-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-06-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-06-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-06.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 6 &#8211; <em>Choix du container \u00ab\u00a0LED trigger access\u00a0\u00bb<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Comme nous l&rsquo;avons indiqu\u00e9 plus haut ce container est <strong>prot\u00e9g\u00e9 par un mot de passe<\/strong>. Comme ceci n&rsquo;est qu&rsquo;un exemple, le mot de passe est rappel\u00e9 dans la description du container, mais en temps normal ce m\u00e9canisme permet de prot\u00e9ger la confidentialit\u00e9 du code m\u00e9tier applicatif.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsqu&rsquo;un container est prot\u00e9g\u00e9 par un mot de passe, il est chiffr\u00e9 avant d&rsquo;\u00eatre enregistr\u00e9 sur le serveur Eris Linux. La cl\u00e9 n&rsquo;est jamais stock\u00e9e en clair, elle est transmise (sous chiffrement fort) aux \u00e9quipements du groupe sur lequel on installe le container. Le <strong>d\u00e9chiffrement<\/strong> du container ne se produit qu&rsquo;une fois arriv\u00e9 sur l&rsquo;\u00e9quipement final, juste avant son installation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour entrer le mot de passe, une zone de saisie appara\u00eet sous la liste d\u00e9roulante.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-07.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-07-1024x733.png\" alt=\"\" class=\"wp-image-7254\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-07-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-07-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-07-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-07.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 7 &#8211; <em>Mot de passe de protection du container.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Au bout d&rsquo;une minute environ (p\u00e9riode de contact entre l&rsquo;\u00e9quipement et le <em>Device Manager<\/em>), le container est t\u00e9l\u00e9charg\u00e9 sur la carte, install\u00e9 puis d\u00e9marr\u00e9 et le clignotement des LEDs du Raspberry Pi 5 commence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au bout d&rsquo;une seconde p\u00e9riode d&rsquo;une minute, son \u00e9tat est remont\u00e9 au <em>Device Manager<\/em>,  dont le tableau en bas \u00e0 droite affiche \u00ab\u00a0<em>Running<\/em>\u00a0\u00bb indiquant que le container est bien en activit\u00e9.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-08.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-08-1024x733.png\" alt=\"\" class=\"wp-image-7255\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-08-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-08-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-08-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-08.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 8 &#8211; <em>Statut \u00ab\u00a0Running\u00a0\u00bb du container actif.<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Container de test d&rsquo;API via IHM Web<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous pouvons \u00e0 pr\u00e9sent charger un second container dans un autre slot. Par exemple \u00ab\u00a0<em>API test using Web HMI<\/em>\u00ab\u00a0.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Celui-ci nous offre une <strong>interface r\u00e9seau de type Web<\/strong> pour essayer une partie des fonctionnalit\u00e9s propos\u00e9es par l&rsquo;API de d\u00e9veloppement du code m\u00e9tier pour Eris Linux.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-09.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-09-1024x733.png\" alt=\"\" class=\"wp-image-7256\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-09-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-09-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-09-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-09.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 9 &#8211; <em>Installation du container avec interface Web.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Au bout de quelques instants, le container aura d\u00e9marr\u00e9 et sera indiqu\u00e9 \u00ab\u00a0<em>Running<\/em>\u00a0\u00bb .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il sera alors possible d&rsquo;acc\u00e9der au petit serveur Web Nginx embarqu\u00e9 dans le container. Pour cela il faut se connecter dans un autre onglet du navigateur sur l&rsquo;adresse IP de l&rsquo;\u00e9quipement indiqu\u00e9e dans le quart inf\u00e9rieur droit du Device Manager (ici&nbsp;: <code>192.168.3.36<\/code>) ainsi&nbsp;: <code><strong>http:\/\/192.168.3.36:8080<\/strong><\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On voit alors appara\u00eetre l&rsquo;\u00e9cran suivant, qui permet de tester les fonctionnalit\u00e9s offertes par Eris Linux pour programmer des applications&nbsp;: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-10.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-10-1024x733.png\" alt=\"\" class=\"wp-image-7257\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-10-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-10-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-10-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-10.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 10 &#8211; <em>Page Web de test de l&rsquo;API Eris Linux<\/em>.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nous reviendrons sur le <strong>d\u00e9tail de l&rsquo;API Eris Linux<\/strong> dans le prochain article, consacr\u00e9 \u00e0 la cr\u00e9ation de containers applicatifs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Container serveur SSH<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Essayons \u00e0 pr\u00e9sent un autre type de container qui nous permettra, via une <strong>connexion SSH<\/strong>, de passer des commandes \u00e0 l&rsquo;int\u00e9rieur de notre container.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-11.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"733\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-11-1024x733.png\" alt=\"\" class=\"wp-image-7258\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-11-1024x733.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-11-300x215.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-11-768x550.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-11.png 1155w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 11 &#8211; <em>Serveur SSH.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Le serveur SSH est accessible \u00e0 l&rsquo;adresse IP de notre carte, sur son port TCP 2222.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Attendons qu&rsquo;il soit install\u00e9 et ait d\u00e9marr\u00e9&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-12.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"716\" src=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-12-1024x716.png\" alt=\"\" class=\"wp-image-7283\" srcset=\"https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-12-1024x716.png 1024w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-12-300x210.png 300w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-12-768x537.png 768w, https:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2026\/08\/Screenshot-03-12.png 1205w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Fig. 12 &#8211; <em>Serveur SSH initialis\u00e9.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Diff\u00e9rentes m\u00e9thodes existent pour se connecter sur ce serveur&nbsp;: les outils comme PuTTY permettent une connexion graphique, tandis que la commande en ligne <code>ssh<\/code> permet un acc\u00e8s depuis un terminal. C&rsquo;est cette derni\u00e8re m\u00e9thode que j&rsquo;utilise car elle est plus lisible dans un article comme celui-ci&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;~]$ <strong>ssh -p 2222 eris@192.168.3.36<\/strong>\nThe authenticity of host '&#91;192.168.3.36]:2222 (&#91;192.168.3.36]:2222)' can't be established.\nED25519 key fingerprint is: SHA256:M7q7+mdoBAcWlqt4sZRg\/U3IoRwtWctVGhk1ByE+sj8\nThis key is not known by any other names.\nAre you sure you want to continue connecting (yes\/no\/&#91;fingerprint])? <strong>yes<\/strong>\nWarning: Permanently added '&#91;192.168.3.36]:2222' (ED25519) to the list of known hosts.\neris@192.168.3.36's password: <strong>linux<\/strong>\nWelcome to Alpine!\n\nThe Alpine Wiki contains a large amount of how-to guides and general\ninformation about administrating Alpine systems.\nSee &lt;https:\/\/wiki.alpinelinux.org\/&gt;.\n\nYou can setup the system with the command: setup-alpine\n\nYou may change this message by editing \/etc\/motd.\n\nf753f1399242:~$ \n\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nous voyons que le container embarque une distribution Alpine minimale. C&rsquo;est un choix lors de la cr\u00e9ation du container. Contrairement \u00e0 ce qu&rsquo;\u00e9crit le prompt un peu trop enthousiaste de cette distribution, la commande <code>setup-alpine<\/code> n&rsquo;existe pas dans cette installation minimale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voyons quelques commandes qui nous donnent des informations sur le syst\u00e8me&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>f753f1399242:~$ <strong>uname -a<\/strong>\nLinux f753f1399242 6.6.63-v8-16k #1 SMP PREEMPT Fri Dec  6 10:10:05 UTC 2024 aarch64 Linux\n\nf753f1399242:~$ <strong>cat \/proc\/cpuinfo <\/strong>\nprocessor\t: 0\nBogoMIPS\t: 108.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp\nCPU implementer\t: 0x41\nCPU architecture: 8\nCPU variant\t: 0x4\nCPU part\t: 0xd0b\nCPU revision\t: 1\n\nprocessor\t: 1\nBogoMIPS\t: 108.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp\nCPU implementer\t: 0x41\nCPU architecture: 8\nCPU variant\t: 0x4\nCPU part\t: 0xd0b\nCPU revision\t: 1\n\nprocessor\t: 2\nBogoMIPS\t: 108.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp\nCPU implementer\t: 0x41\nCPU architecture: 8\nCPU variant\t: 0x4\nCPU part\t: 0xd0b\nCPU revision\t: 1\n\nprocessor\t: 3\nBogoMIPS\t: 108.00\nFeatures\t: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp\nCPU implementer\t: 0x41\nCPU architecture: 8\nCPU variant\t: 0x4\nCPU part\t: 0xd0b\nCPU revision\t: 1\n\nRevision\t: d04170\nSerial\t\t: 0e7a28ef8acca700\nModel\t\t: Raspberry Pi 5 Model B Rev 1.0\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ces premi\u00e8res informations sont celles du syst\u00e8me h\u00f4te&nbsp;: contrairement \u00e0 une machine virtuelle, le container utilise le m\u00eame noyau Linux que l\u2019\u00e9quipement. D\u2019autres informations, comme la liste des processus, sont en revanche propres \u00e0 l\u2019espace d\u2019ex\u00e9cution du container.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>f753f1399242:~$ <strong>ps aux<\/strong>\nPID   USER     TIME  COMMAND\n    1 root      0:00 \/sbin\/docker-init -- \/usr\/sbin\/sshd -D\n    7 root      0:00 sshd: \/usr\/sbin\/sshd -D &#91;listener] 0 of 10-100 startups\n   18 root      0:00 sshd-session: eris &#91;priv]\n   20 eris      0:00 sshd-session: eris@pts\/1\n   21 eris      0:00 -sh\n   26 eris      0:00 ps aux\n\nf753f1399242:~$ <strong>free<\/strong>\n              total        used        free      shared  buff\/cache   available\nMem:        8133264      194764     7620308       42748      318192     7833216\nSwap:             0           0           0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">NB&nbsp;: la commande <code>free<\/code> affiche la m\u00e9moire visible depuis le container, mais comme aucune limitation ne lui est impos\u00e9e, il s&rsquo;agit \u00e9galement de la m\u00e9moire syst\u00e8me globale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il est aussi possible de se connecter en utilisant le compte <code><strong>root<\/strong><\/code> avec le mot de passe <code><strong>root<\/strong><\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;int\u00e9r\u00eat de cette connexion en tant que telle est tr\u00e8s limit\u00e9e. Son utilit\u00e9 est surtout de servir d&rsquo;exemple si on souhaite ajouter un serveur SSH dans un container pendant la phase de mise au point du code applicatif.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Code source des containers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les <strong>fichiers sources<\/strong> permettant de produire les containers pr\u00e9sent\u00e9s ici, et plusieurs autres, sont disponibles librement sur <a href=\"https:\/\/github.com\/Eris-Linux\/Eris-Linux-containers\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>https:\/\/github.com\/Eris-Linux\/Eris-Linux-containers<\/strong><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous les utiliserons comme base de travail dans le prochain article traitant du d\u00e9veloppement du code m\u00e9tier applicatif, mais n&rsquo;h\u00e9sitez pas \u00e0 les examiner et \u00e0 jouer avec en attendant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Avec les op\u00e9rations d\u00e9crites dans cet article, il est possible de d\u00e9ployer des containers d&rsquo;exemple sur des groupes d&rsquo;\u00e9quipements, de v\u00e9rifier leur fonctionnement, de les supprimer, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous recherchons actuellement des entreprises partenaires souhaitant exp\u00e9rimenter Eris Linux sur un cas d\u2019usage r\u00e9el. Ces premiers utilisateurs pourront b\u00e9n\u00e9ficier de conditions commerciales avantageuses et leurs retours d\u2019exp\u00e9rience contribueront directement \u00e0 l\u2019\u00e9volution du projet.<\/p>","protected":false},"excerpt":{"rendered":"<p>Nous avons vu dans les articles pr&eacute;c&eacute;dents en quoi consistait la distribution industrielle Eris Linux et comment l&rsquo;installer ais&eacute;ment sur une carte du commerce, un Raspberry Pi 5 en l&rsquo;occurrence. J&rsquo;avais indiqu&eacute; que j&rsquo;aimais comparer Eris Linux &agrave; un vaisseau porte-containers. C&rsquo;est le moment de lui faire jouer ce r&ocirc;le et d&rsquo;embarquer ses premiers containers. [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,27,8,11],"tags":[],"class_list":["post-7232","post","type-post","status-publish","format-standard","hentry","category-embarque","category-eris-linux","category-linux-2","category-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/7232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/comments?post=7232"}],"version-history":[{"count":38,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/7232\/revisions"}],"predecessor-version":[{"id":7638,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/7232\/revisions\/7638"}],"wp:attachment":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/media?parent=7232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/categories?post=7232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/tags?post=7232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}