Docker : Comment cette technologie transforme-t-elle le développement moderne ?

EN BREF

  • Introduction à Docker et son impact sur le développement moderne.
  • Isolation des applications via des conteneurs.
  • Portabilité entre environnements de développement et production.
  • Scalabilité et gestion efficace des ressources.
  • Intégration continue et déploiement continu facilités.
  • Collaboration améliorée au sein des équipes de développement.
  • Conclusion sur l’avenir du développement avec Docker.

découvrez docker, la solution innovante qui facilite la création, le déploiement et la gestion d'applications dans des conteneurs. optimisez vos processus de développement et assurez une portabilité maximale de vos applications grâce à cette technologie incontournable.
Image réalisée par Anastasiia Lopushynska – Pexels

Docker est devenu un enjeu majeur dans le paysage du développement logiciel moderne, offrant une solution efficace pour la création, le déploiement et la gestion d’applications. En encapsulant les applications et leurs dépendances dans des conteneurs légers et portables, Docker facilite la collaboration entre les équipes de développement et d’exploitation tout en optimisant les ressources. Cette technologie révolutionne la manière dont les applications sont conçues et déployées, permettant une intégration continue et un déploiement rapide dans divers environnements. Grâce à sa capacité à améliorer la cohérence et à réduire les conflits entre les environnements de développement et de production, Docker redéfinit les standards de développement et présente des avantages significatifs pour les entreprises cherchant à innover rapidement sur le marché.

Comprendre les fondamentaux de Docker

Docker est une plateforme qui facilite la création, le déploiement et l’exécution d’applications à l’aide de conteneurs. Ces derniers permettent de regrouper le code et toutes ses dépendances pour qu’elle puisse fonctionner sur n’importe quel environnement informatique, qu’il soit local ou en production. Cette isolation garantit que chaque application fonctionne de manière cohérente, indépendamment des différences entre les systèmes.

Un aspect fondamental de Docker est sa capacité à simplifier le processus de développement. En utilisant des conteneurs, les développeurs peuvent créer des environnements reproductibles rapidement et efficacement. Les étapes de configuration qui prenaient auparavant des heures ou des jours peuvent maintenant être automatisées, réduisant ainsi les délais de mise en production.

La gestion des ressources est également améliorée grâce à Docker. Les conteneurs sont légers et permettent une utilisation optimale des ressources système par rapport aux machines virtuelles traditionnelles. Cela se traduit par une exécution plus rapide et une meilleure densité des applications. De plus, la possibilité de faire tourner plusieurs conteneurs sur une seule machine physique favorise la scalabilité des applications.

Un autre aspect clé est la portabilité. Les conteneurs Docker peuvent être exécutés sur n’importe quel système d’exploitation ou cloud qui supporte Docker, éliminant de facto les problèmes de compatibilité. Cela permet aux équipes de développement de travailler sur des projets sans se soucier des différences d’environnement.

Parmi les fonctionnalités essentielles de Docker, on retrouve :

  • Docker Hub : un registre de conteneurs qui permet de partager et de gérer facilement des images de conteneurs.
  • Docker Compose : un outil qui permet de définir et de gérer des applications complexes en utilisant un fichier de configuration YAML.
  • Docker Swarm : une fonctionnalité de gestion de clusters qui permet de déployer et de gérer des groupes de conteneurs sur plusieurs hôtes.

Enfin, l’adoption de Docker dans les pipelines de CI/CD améliore l’intégration et le déploiement continu. Les tests automatisés peuvent être effectués dans des environnements identiques à la production, garantissant ainsi une transition fluide du code dans les différentes phases du cycle de vie du développement.

Les conteneurs et leur fonctionnement

Docker est une plateforme de virtualisation permettant de créer, déployer et gérer des applications à l’intérieur de conteneurs. Les conteneurs offrent une solution légère et portable pour exécuter des applications dans des environnements isolés, ce qui simplifie la gestion des applications complexes. Cette technologie a considérablement transformé le paysage du développement moderne.

Les conteneurs sont des unités standardisées qui regroupent tout le nécessaire pour faire fonctionner une application, y compris le code, les bibliothèques et les dépendances, sans le poids d’un hyperviseur traditionnel. Ce modèle de déploiement permet une meilleure efficacité, une réduction des coûts d’infrastructure et une souplesse accrue pour les équipes de développement.

Le principe de fonctionnement des conteneurs repose sur l’utilisation du noyau de l’hôte tout en isolant les processus, ce qui permet d’exécuter plusieurs conteneurs simultanément. Voici les composants clés de cette architecture :

  • Images Docker : Ce sont des templates en mode lecture qui contiennent tout le nécessaire pour exécuter une application.
  • Dockerfile : Un fichier texte qui contient les instructions pour assembler une image Docker.
  • Docker Engine : La technologie qui crée et gère des conteneurs Docker.
  • Docker Hub : Un registre de conteneurs où les utilisateurs peuvent partager et télécharger des images.

Cette architecture permet un développement plus rapide et une collaboration améliorée entre les équipes, qui peuvent travailler sur des applications de manière isolée, sans se soucier des variations d’environnement. En permettant de déployer avec confiance des mises à jour fréquentes, Docker aide à réduire les risques liés aux déploiements d’applications.

Avec l’adoption croissante de microservices, Docker s’est imposé comme un outil incontournable pour les équipes cherchant à moderniser leur infrastructure et à améliorer leur agilité. Les équipes peuvent désormais utiliser Docker pour passer facilement d’un environnement de développement à un environnement de production, tout en maintenant une cohérence et une efficacité.

Différences entre les conteneurs et les machines virtuelles

Docker a révolutionné le paysage du développement moderne, en facilitant la création, le déploiement et la gestion d’applications via des conteneurs. Contrairement aux méthodes traditionnelles, Docker permet d’isoler les applications dans des environnements légers et portables.

Pour saisir pleinement les applications de Docker, il est essentiel de comprendre ses fondements. À la base, Docker utilise des conteneurs pour emballer une application et toutes ses dépendances. Ces conteneurs sont suffisamment légers pour qu’ils puissent être démarrés rapidement et déployés sur n’importe quel système d’exploitation supportant Docker.

Il est crucial de faire la distinction entre les conteneurs et les machines virtuelles (VM). Voici quelques différences clés :

  • Isolation : Les conteneurs partagent le noyau du système d’exploitation hôte, tandis que les machines virtuelles exécutent leur propre noyau.
  • Légèreté : Les conteneurs consomment moins de ressources que les machines virtuelles, ce qui permet de déployer plus d’applications sur un même système.
  • Startup : Les conteneurs démarrent presque instantanément, alors que le lancement d’une VM peut prendre plusieurs minutes.
  • Portabilité : Les conteneurs Docker peuvent être exécutés sur n’importe quelle plateforme qui supporte Docker, tandis que les VM sont souvent liées à des hyperviseurs spécifiques.

En conséquence, l’utilisation de Docker transforme la façon dont les développeurs et les équipes opérationnelles collaborent, en facilitant le développement agile et le déploiement continu. Cette technologie réduit les incompatibilités entre les environnements de développement, de test et de production, permettant ainsi une intégration et une livraison continues plus efficaces.

Axe de transformation Description concise
Isolation des applications Permet de faire tourner des applications de façon indépendante, évitant les conflits de dépendances.
Portabilité Les conteneurs peuvent être exécutés sur n’importe quel système compatible, facilitant le déploiement.
Scalabilité Facilite le scaling horizontal des applications, permettant d’ajouter facilement des instances.
Développement agile Accélère le développement avec des cycles de mise en œuvre plus courts grâce à l’intégration continue.
Gestion des ressources Optimise l’utilisation des ressources serveur, permettant d’augmenter l’efficacité des systèmes.
Collaboration améliorée Simplifie le travail en équipe en standardisant l’environnement de développement.
Microservices Facilite l’architecture microservices, permettant à chaque service d’évoluer indépendamment.

L’impact de Docker sur le cycle de développement

La technologie Docker a révolutionné le cycle de développement des applications en proposant un environnement léger et isolé pour le déploiement de logiciels. Grâce à son approche de containerisation, Docker permet de simplifier la gestion des dépendances et d’assurer la cohérence entre les environnements de développement, de test et de production.

Un des avantages majeurs de Docker réside dans sa capacité à faciliter le développement collaboratif. Les développeurs peuvent partager des images container, lesquelles contiennent tout le nécessaire pour faire fonctionner une application. Cela évite les problèmes de « ça marche sur ma machine » et donc accroît la productivité des équipes.

En outre, Docker améliore la flexibilité des environnements de développement. Les développeurs peuvent facilement créer des instances temporaires pour tester des fonctionnalités nouvelles ou faire des expérimentations sans affecter les systèmes en production. Cette approche encourage l’innovation et accélère le processus de mise en marché des produits.

Un autre aspect notoire est l’optimisation des ressources. Contrairement aux machines virtuelles qui nécessitent des systèmes d’exploitation complets, les containers Docker partagent le même noyau, ce qui réduit l’empreinte mémoire et permet une exécution plus rapide des applications. Cela se traduit par des coûts réduits en termes d’infrastructure et une meilleure utilisation des ressources.

La sécurité est également un sujet essentiel. Docker permet d’isoler les applications dans des containers, ce qui limite les risques de vulnérabilités potentielles. Chaque container fonctionne de manière indépendante, réduisant ainsi l’impact d’une éventuelle faille de sécurité.

Les intégrations continues et déploiements continus (CI/CD) sont simplifiés grâce à Docker. Les outils de CI/CD peuvent facilement construire, tester et déployer des containers Docker, garantissant que les nouvelles versions des applications sont mises en production rapidement et avec un minimum de risques.

Enfin, en rendant le déploiement des applications multi-environnements plus homogène, Docker aide les organisations à évoluer plus rapidement et à s’adapter de manière proactive aux changements de marché.

Accélération des déploiements

Docker est devenu un acteur incontournable dans l’écosystème du développement moderne, transformant la manière dont les applications sont créées, déployées et gérées. Cette technologie repose sur des conteneurs, qui encapsulent une application et toutes ses dépendances dans un environnement isolé. Cela contribue à résoudre les problèmes de compatibilité entre différentes environnements de développement et de production.

Un des principaux impacts de Docker sur le cycle de développement est l’accélération des déploiements. Grâce à la capacité de créer des conteneurs légers et portables, les équipes de développement peuvent déployer des applications plus rapidement. Voici quelques points clés expliquant cette accélération :

  • Isolation environnementale : Les conteneurs garantissent que chaque application fonctionne dans son propre environnement, ce qui minimise les résultats des conflits de dépendances.
  • Versioning et cohérence : Les conteneurs peuvent être versionnés, permettant de revenir facilement à une version antérieure en cas de dysfonctionnement.
  • Infrastructure as Code (IaC) : Docker facilite l’utilisation d’outils de déploiement automatisé, rendant les processus de mise en production plus fluides.
  • CI/CD : L’intégration de Docker dans les pipelines Continuous Integration/Continuous Deployment permet aux équipes de livrer des mises à jour fréquentes et fiables.

Les équipes peuvent ainsi réduire le coût de leur infrastructure, car les conteneurs sont généralement plus légers et nécessitent moins de ressources. Cela a pour effet d’améliorer l’efficacité et la productivité globale, tout en réduisant le temps consacré à la gestion des serveurs.

En intégrant Docker dans leur flux de travail, les développeurs bénéficient également d’une plus grande flexibilité. La possibilité de déployer des applications sur divers environnements, que ce soit sur des serveurs locaux, des machines virtuelles ou des environnements cloud, ouvre la voie à des solutions plus adaptées aux besoins spécifiques de chaque projet.

Enfin, la communauté active qui gravite autour de Docker permet un accès constant à des ressources, des tutoriels et des outils visant à partager les meilleures pratiques et à résoudre les défis rencontrés dans l’adoption de cette technologie.

Facilitation de la collaboration entre équipes

Docker a révolutionné le cycle de développement en offrant des solutions innovantes pour la gestion des applications et des environnements de déploiement. Grâce à sa capacité à créer des conteneurs légers et portables, Docker permet aux développeurs de transformer leur manière de concevoir, tester et déployer des applications. Cette technologie facilite la transition vers des architectures modernes, comme les microservices, tout en optimisant l’utilisation des ressources.

Un des principaux avantages de Docker est sa capacité à simplifier la collaboration entre équipes. Dans un environnement où les développeurs, les testeurs et les opérations doivent travailler ensemble efficacement, Docker permet de créer des environnements homogènes grâce à l’utilisation de conteneurs. Voici quelques points clés sur cette facilitation :

  • Standardisation des environnements : Chaque membre peut travailler sur une version identique d’une application, évitant ainsi les problèmes de compatibilité.
  • Isolation des applications : Les conteneurs gardent les applications et leurs dépendances séparées, réduisant le risque de conflits.
  • Déploiements rapides : La possibilité de créer et de déployer des conteneurs en quelques secondes permet une intégration continue efficace.
  • Facilité de test : Les équipes QA peuvent tester des versions isolées des applications sans impacts sur les environnements de production.

En intégrant Docker, les équipes peuvent non seulement améliorer leur productivité, mais également réduire le temps nécessaire pour passer du développement à la mise en production. Cette rapidité et cette efficacité sont devenues essentielles dans un paysage technologique en constante évolution.

Meilleures pratiques pour l’utilisation de Docker

Dans le monde du développement moderne, l’adoption de Docker a radicalement transformé les méthodes de travail. Cette technologie permet l’automatisation des déploiements d’applications et facilite la gestion des environnements. Pour maximiser les bénéfices de Docker, il est crucial de suivre certaines meilleures pratiques.

Premièrement, il est essentiel de créer des images Docker léger et optimisées. Utiliser des images de base plus petites, comme Alpine Linux, peut réduire le temps de téléchargement et améliorer les performances. De plus, enlever les fichiers inutiles avec des commandes comme npm prune peut contribuer à diminuer la taille de l’image finale.

Ensuite, la gestion des volumes est fondamentale pour la persistance des données. En utilisant des volumes Docker, les développeurs peuvent stocker des données indépendamment des conteneurs. Cela est particulièrement utile pour les bases de données où les données doivent être conservées même après la suppression du conteneur.

L’utilisation de Docker Compose pour gérer des applications multi-conteneurs facilite également le quotidien des développeurs. Compose permet de définir et exécuter des applications en utilisant un fichier YAML, ce qui rend le déploiement rapide et les configurations facilement maintenues. En outre, il est conseillé d’utiliser des réseaux dans Docker pour faciliter la communication entre les conteneurs.

En matière de sécurité, il est important de ne jamais exécuter des conteneurs avec des privilèges élevés. Il est recommandé de créer des utilisateurs non-root et d’appliquer des politiques de sécurité pour limiter les accès. De plus, l’utilisation de scan d’images pour identifier les vulnérabilités avant le déploiement peut jouer un rôle crucial dans la protection de l’environnement de production.

Enfin, maintenir un historique et une documentation précise des Dockerfiles et des configurations des conteneurs est nécessaire. Cela garantit que les équipes peuvent reproduire des environnements facilement et que la gestion des versions des applications reste organisée.

En adoptant ces meilleures pratiques, les équipes de développement peuvent tirer pleinement parti des capacités de Docker, améliorant ainsi leur efficacité et la fiabilité des déploiements.

Optimisation des images de conteneurs

Docker est devenu un acteur clé dans le domaine du développement moderne grâce à sa capacité à encapsuler des applications et leurs dépendances dans des conteneurs. Cela permet une portabilité et une scalabilité sans précédent. Cependant, pour tirer le meilleur parti de Docker, il est essentiel d’adopter certaines meilleures pratiques, notamment en ce qui concerne l’optimisation des images de conteneurs.

Les images de conteneurs sont des fichiers statiques qui contiennent tout ce dont une application a besoin pour s’exécuter. Un conteneur est une instance en cours d’exécution de cette image. Optimiser ces images est crucial pour réduire le temps de téléchargement, améliorer les performances et minimiser l’espace de stockage. Voici quelques astuces pour optimiser vos images de conteneurs :

  • Utilisez des images de base légères : Optez pour des images comme Alpine ou Scratch lorsque cela est possible. Cela réduit la taille de l’image et les dépendances inutiles.
  • Minimisez le nombre de couches : Fusionnez les instructions RUN dans un seul fichier Dockerfile. Chaque instruction crée une nouvelle couche, ce qui peut rapidement augmenter la taille de l’image.
  • Évitez les fichiers temporaires : Nettoyez les fichiers temporaires ou inutiles à la fin de l’exécution des instructions dans le Dockerfile pour minimiser la taille de l’image finale.
  • Excluez les fichiers inutiles : Utilisez un fichier .dockerignore pour éviter d’inclure des fichiers qui ne sont pas nécessaires à l’exécution de l’application, comme les fichiers de configuration, les tests, et la documentation.
  • Choisissez le bon moment pour le caching : Réorganisez les instructions du Dockerfile afin que les étapes les plus susceptibles de changer (comme la copie du code source) viennent à la fin. Cela maximise l’utilisation du caché Docker.

En optimisant vos images de conteneurs avec ces meilleures pratiques, vous améliorerez non seulement le temps de déploiement, mais aussi l’efficacité et la sécurité de votre pipeline de développement. L’adoption de Docker, tout en suivant ces recommandations, peut vraiment transformer votre approche du développement moderne.

Gestion des secrets et des configurations

Dans l’univers du développement moderne, la gestion des secrets et des configurations est cruciale pour garantir la sécurité des applications. Avec Docker, il est essentiel d’adopter des approches spécifiques pour stocker et gérer les informations sensibles, telles que les clés API, les identifiants de base de données et d’autres données confidentielles.

Les meilleures pratiques pour la gestion des secrets comprennent :

  • Utilisation de Docker Secrets : Docker propose une fonctionnalité intégrée pour gérer les secrets. Cela permet de stocker les informations sensibles de manière sécurisée et de les rendre accessibles uniquement aux conteneurs qui en ont besoin.
  • Configuration via des fichiers d’environnement : Plutôt que d’inclure les informations sensibles directement dans les images Docker, il est recommandé d’utiliser des fichiers `.env` pour passer des variables d’environnement lors de l’exécution de vos conteneurs.
  • Ne jamais hardcoder les secrets : Évitez de mettre vos secrets en dur dans les fichiers du code source. Utilisez des options comme les volumes montés pour passer des données externes aux conteneurs.
  • Gestion des accès : Limitez les permissions et assurez-vous que seuls les conteneurs et utilisateurs appropriés aient accès aux informations sensibles.

En ce qui concerne les configurations, les utilisateurs de Docker devraient :

  • Utiliser des fichiers YAML : L’utilisation de fichiers de configuration au format YAML facilite la gestion des paramètres d’applications tout en maintenant un niveau de clarté et de lisibilité.
  • Versionner les configurations : Gardez un historique des modifications dans les fichiers de configuration en utilisant des systèmes de contrôle de version comme Git.
  • Parallélisme des environnements de développement : En utilisant Docker Compose, il est possible de définir et déployer des environnements multi-conteneurs facilement, ce qui améliore la cohérence entre les environnements de développement, de test et de production.

En respectant ces pratiques, les développeurs peuvent garantir que la gestion des secrets et des configurations soit à la fois sécurisée et efficace, tout en minimisant les risques associés à la gestion des données sensibles dans les applications conteneurisées.

Défis et limites de la technologie Docker

Docker est une technologie révolutionnaire dans le domaine du développement logiciel, mais elle n’est pas sans défis. Bien qu’elle apporte une flexibilité et une simplification des environnements de déploiement, certaines limites doivent être prises en compte.

Un des principaux défis de Docker réside dans la gestion de la complexité. Les conteneurs permettent de créer des applications modulaires, mais cette modularité peut entraîner une complexité accrue dans la gestion des interconnexions entre les services et les conteneurs. Les développeurs doivent ainsi être vigilants quant à la coordination et à la configuration des services qui interagissent entre eux.

Ensuite, la sécurité est un autre enjeu majeur. Bien que Docker ait des mécanismes de sécurité intégrés, la nature des conteneurs véhiculant des applications dans un même noyau Linux peut exposer les systèmes à des vulnérabilités. Les images de conteneurs, si elles ne sont pas correctement scannées et mises à jour, peuvent contenir des failles qui compromettent l’intégrité de l’application et des données.

De plus, la performance peut parfois être affectée. Bien que Docker utilise moins de ressources que les machines virtuelles traditionnelles, le surcoût lié à la gestion des conteneurs peut se traduire par des ralentissements, notamment lorsque les conteneurs doivent accéder à des volumes de données importants ou exécuter des tâches intensives en ressources.

Enfin, la portabilité des conteneurs, bien qu’étant l’un de leurs principaux avantages, peut parfois être un obstacle. Les différences entre les environnements de déploiement et les configurations des infrastructures peuvent engendrer des problèmes lorsqu’il s’agit de déplacer des applications entre différents environnements. Les équipes doivent s’assurer que les configurations sont homogènes pour éviter des comportements inattendus.

Ces défis soulignent l’importance d’une formation adéquate et d’une planification stratégique lors de l’intégration de Docker dans un processus de développement. Une bonne connaissance des outils et des meilleures pratiques est essentielle pour tirer pleinement parti de cette technologie tout en minimisant les risques associés.

Sécurité des conteneurs

Docker a révolutionné le paysage du développement moderne, permettant un déploiement rapide d’applications dans des environnements virtuels appelés containeurs. Cependant, cette technologie n’est pas sans défis. L’un des aspects les plus problématiques concerne la sécurité des conteneurs.

Les conteneurs, bien qu’ils offrent une isolation des applications, peuvent présenter des vulnérabilités. Un accès non autorisé à un conteneur peut facilement compromettre les données et le système hôte. Voici quelques défis principaux liés à la sécurité des conteneurs :

  • Gestion des accès : La configuration erronée des permissions et des rôles peut permettre à des utilisateurs non autorisés d’accéder aux ressources critiques.
  • Images non sécurisées : L’utilisation d’images de conteneur non vérifiées ou mal mises à jour peut introduire des failles de sécurité. Les attaquants peuvent exploiter ces images pour des attaques.
  • Vulnérabilités des applications : Même lorsque Docker est bien configuré, les applications fonctionnant à l’intérieur des conteneurs peuvent contenir des failles qui doivent être corrigées.

Pour renforcer la sécurité des conteneurs, il est recommandé de suivre les pratiques suivantes :

  • Utiliser des images officielles : Privilégier les images de conteneurs officielles et maintenues activement et veiller à ce qu’elles soient à jour.
  • Limiter les privilèges : Exécuter des conteneurs avec le minimum de privilèges nécessaires pour réduire l’impact d’une éventuelle compromission.
  • Scanner régulièrement : Mettre en place des outils de scan de sécurité pour détecter les vulnérabilités dans les conteneurs et les images utilisées.
  • Application de correctifs : Appliquer rapidement les mises à jour de sécurité pour le moteur Docker et les applications déployées.

En face des avantages indéniables de Docker pour le déploiement agile d’applications, il est crucial de ne pas négliger ces défis. La vigilance en matière de sécurité doit être une priorité absolue pour réussir l’intégration de cette technologie dans le cycle de développement moderne.

Performance et surcharge de gestion

La technologie Docker a révolutionné le développement moderne en offrant des outils facilitant la création, le déploiement et la gestion d’applications dans des environnements isolés appelés conteneurs. Toutefois, son adoption n’est pas sans défis et limites.

Un facteur crucial à prendre en compte est la performance des applications fonctionnant dans des conteneurs. Alors que Docker permet une utilisation optimale des ressources, certaines configurations peuvent entraîner une surcharge de gestion. Cette surcharge survient surtout lors de l’orchestration de plusieurs conteneurs, lorsque chaque service devient un élément à surveiller et à maintenir.

Voici quelques points à considérer concernant la performance :

  • Latence accrue : Les appels entre services conteneurisés peuvent parfois introduire une latence supplémentaire par rapport à une architecture monolithique.
  • Consommation mémoire : Bien que les conteneurs soient généralement légers, un mauvais dimensionnement des ressources peut entraîner une consommation de mémoire excessive.
  • Gestion de réseau : Les configurations réseau complexes augmentent les risques de défaillances ou de ralentissements.

En outre, l’apprentissage d’outils comme Kubernetes pour l’orchestration des conteneurs peut représenter une barrière pour les équipes ne possédant pas d’expérience préalable. Cela nécessite un investissement en formation et en temps, ce qui peut freiner l’adoption rapide de Docker dans certaines entreprises.

Enfin, la gestion de la sécurité constitue un enjeu majeur. Chaque conteneur doit être configuré de manière à minimiser les vulnérabilités tout en respectant les politiques de sécurité internes. Cela inclut la mise à jour régulière des images et des dépendances, ainsi que le renforcement des configurations réseau.

Docker a le potentiel de transformer le développement moderne, mais il est essentiel de comprendre et de gérer ces défis pour en tirer pleinement parti.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *