Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
docker [Le 06/07/2025, 21:41]
krodelabestiole snap intègre docker-compose / détails dépôts
docker [Le 08/07/2025, 07:21] (Version actuelle)
krodelabestiole détails
Ligne 4: Ligne 4:
 ====== docker ====== ====== docker ======
  
-**[[wpfr>​Docker]]** est un logiciel libre (sous [[wpfr>​Licence_Apache|licence Apache 2.0]]) à mi-chemin entre la virtualisation applicative et l'​automatisation. Il permet de manipuler des conteneurs de logiciels. Il isole les processus les uns des autres pour créer une virtualisation de haut niveau.\\ +**[[wpfr>​Docker]]** est un logiciel libre (sous [[wpfr>​Licence_Apache|licence Apache 2.0]]) à mi-chemin entre la virtualisation applicative et l'​automatisation. Il permet de manipuler des conteneurs de logiciels. Il isole les processus les uns des autres pour créer une [[wpfr>​Conteneur_(virtualisation)|virtualisation de haut niveau]].\\ 
-Contrairement aux systèmes de [[:​virtualisation]],​ **Docker** n'​embarque pas tout le système d'​exploitation invité (tel que le [[:​kernel|noyau]]) mais ne s'​occupe que de la partie haut niveau. Il utilise le noyau de l'​hôte et ne fait fonctionner que le strict nécessaire sur les invités.+Contrairement aux systèmes de [[:​virtualisation]],​ **Docker** n'​embarque pas tout le système d'​exploitation invité (tel que le [[:​kernel|noyau]]) mais ne s'​occupe que de la partie haut niveau. Il utilise le noyau de l'​hôte et ne fait fonctionner que le strict nécessaire sur les invités. Ceci allège grandement les images invitées et les ressources nécessaires à leur fonctionnement tout en assouplissant la distribution de celles-ci.
  
 **Docker** permet ainsi de décrire un environnement complet de développement ou de production pour en faciliter la portabilité. Il est théoriquement spécifiquement orienté [[:​serveur]] ([[:LAMP]], [[:​NodeJS]],​ [[:CMS]], [[:​cms#​generateurs_de_sites_statiques|SSG]],​ etc.) mais fonctionne en pratique aussi pour n'​importe quel service, utilitaire, ou application en ligne de commande. **Docker** permet ainsi de décrire un environnement complet de développement ou de production pour en faciliter la portabilité. Il est théoriquement spécifiquement orienté [[:​serveur]] ([[:LAMP]], [[:​NodeJS]],​ [[:CMS]], [[:​cms#​generateurs_de_sites_statiques|SSG]],​ etc.) mais fonctionne en pratique aussi pour n'​importe quel service, utilitaire, ou application en ligne de commande.
  
-Plus simplement, **Docker** permet de distribuer et donc télécharger,​ installer et faire fonctionner facilement une application ou un ensemble de services sur n'​importe quelle [[:​distributions|distribution Linux]] depuis un dépôt d'​images standard, **[[https://​hub.docker.com/​|Docker Hub]]**. Ceci le rend extrêmement pertinent pour monter un [[:​hebergement#​auto-hebergement|serveur auto-hébergé]],​ dans le but général de déployer rapidement divers outils à usage privé ou semi-privé,​ pour éventuellement les découvrir en les essayant.((Voir le sujet //​[[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=2082878|Docker : pour ou contre ?]]// sur le forum)) En fonction des images choisies et de leurs configurations,​ sa souplesse et sa fiabilité le rendent tout aussi apte à fournir des services en production.+Plus simplement, **Docker** permet de distribuer et donc télécharger,​ installer et faire fonctionner facilement une application ou un ensemble de services sur n'​importe quelle [[:​distributions|distribution Linux]] depuis un dépôt d'​images standard, **[[https://​hub.docker.com/​|Docker Hub]]**. Ceci le rend extrêmement pertinent pour monter un [[:​hebergement#​auto-hebergement|serveur auto-hébergé]],​ dans le but général de déployer rapidement divers outils à usage privé ou semi-privé,​ pour éventuellement les découvrir en les essayant.((Voir le sujet //​[[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=2082878|Docker : pour ou contre ?]]// sur le forum)) En fonction des images choisies et de leurs configurations,​ sa souplesse et sa fiabilité le rendent tout aussi apte à fournir des services en production, même lorsque ceux-ci sont basés sur des technologies disparates.
  
 <note tip>Pour mettre en place un serveur [[:LAMP]] grâce à Docker, n'​hésitez pas à consulter [[:​docker_lamp|ce tutoriel]].</​note>​ <note tip>Pour mettre en place un serveur [[:LAMP]] grâce à Docker, n'​hésitez pas à consulter [[:​docker_lamp|ce tutoriel]].</​note>​
  
-<note warning>À l'​heure actuelle, ​Docker n'est [[https://​github.com/​Microsoft/​WSL/​issues/​575|pas compatible]] avec [[:​wsl|Windows Subsystem for Linux 1]]. Pour l'​utiliser vous devez convertir votre subsystem en version 2 (''​wsl.exe %%--%%set-version ubuntu 2''​).</​note>​+<note warning>​Docker n'est [[https://​github.com/​Microsoft/​WSL/​issues/​575|pas compatible]] avec [[:​wsl|Windows Subsystem for Linux 1]]. Pour l'​utiliser vous devez convertir votre //subsystem// en version 2 (''​wsl.exe %%--%%set-version ubuntu 2''​).</​note>​
  
 ===== Fonctionnement ===== ===== Fonctionnement =====
Ligne 21: Ligne 21:
 Docker fonctionne en compartimentant les containers (qui hébergent chacun un service), et l'​hôte,​ la machine sur laquelle il est installé. Docker fonctionne en compartimentant les containers (qui hébergent chacun un service), et l'​hôte,​ la machine sur laquelle il est installé.
  
-Ces containers sont basés sur des [[:​distributions]] Linux minimalistes (souvent Alpine ou Debian-slim,​ [[https://​hub.docker.com/​_/​ubuntu|Ubuntu est aussi disponible]]),​ sur lesquelles on passe des commandes pour installer des logiciels ou les configurer. Cela se fait dans un fichier ''​Dockerfile''​ (qui est donc une liste de commandes, ​un peu comme un [[:​bash|script bash]], qui décrit l'​image du container).\\ +Ces containers sont basés sur des [[:​distributions]] Linux minimalistes (souvent Alpine ou Debian-slim,​ [[https://​hub.docker.com/​_/​ubuntu|Ubuntu est aussi disponible]]),​ sur lesquelles on passe des commandes pour installer des logiciels ou les configurer. Cela se fait dans un fichier ''​[[#​Automatisation avec un Dockerfile|Dockerfile]]''​ (qui est donc une liste de commandes ​qui décrit l'​image du containerà la manière d'un [[:​bash|script bash]]).\\ 
-On peut échanger ce fichier ''​Dockerfile''​ et les images générées sur [[https://​hub.docker.com/​|Docker Hub]] en particulier,​ ce qui permet aux éditeurs et développeurs de distribuer leurs applications web.\\+On peut échanger ce fichier ''​[[#​Automatisation avec un Dockerfile|Dockerfile]]''​ et les images générées sur [[https://​hub.docker.com/​|Docker Hub]] en particulier,​ ce qui permet aux éditeurs et développeurs de distribuer leurs applications web.\\
 Ceci permet de télécharger des images pré-construites,​ qui embarquent donc toutes les dépendances (jusqu'​au système) d'une application web ou autre (on trouve aussi des outils en [[:​commande_shell|ligne de commande]], qui ne sont pas spécifiques aux [[:​serveur|serveurs]]). Il suffit d'une ligne de commande pour les récupérer et les exécuter. Ceci permet de télécharger des images pré-construites,​ qui embarquent donc toutes les dépendances (jusqu'​au système) d'une application web ou autre (on trouve aussi des outils en [[:​commande_shell|ligne de commande]], qui ne sont pas spécifiques aux [[:​serveur|serveurs]]). Il suffit d'une ligne de commande pour les récupérer et les exécuter.
  
Ligne 47: Ligne 47:
 Une autre particularité de **Docker** est le fait que pour permettre ce fonctionnement,​ tous les containers doivent être réinitialisés à chaque lancement.\\ Une autre particularité de **Docker** est le fait que pour permettre ce fonctionnement,​ tous les containers doivent être réinitialisés à chaque lancement.\\
 Toutes les données devant être persistées,​ fichiers et bases de données, doivent se trouver ailleurs, généralement sur l'​hôte ou dans un [[https://​docs.docker.com/​engine/​storage/​volumes/​|volume]] spécifique.\\ Toutes les données devant être persistées,​ fichiers et bases de données, doivent se trouver ailleurs, généralement sur l'​hôte ou dans un [[https://​docs.docker.com/​engine/​storage/​volumes/​|volume]] spécifique.\\
-D'où l'​intérêt primordial des correspondances ''​hôte:​container''​ (c'est la syntaxe utilisée) décrites au paragraphe précédent. On ne conserve jamais rien d'​utile seulement dans un container !+D'où l'​intérêt primordial des correspondances ​(//​[[https://​docs.docker.com/​engine/​storage/​bind-mounts/​|bindings]]//​) ​''​hôte:​container''​ ou ''​volume:​container''​ (c'est la syntaxe utilisée) décrites ​[[#​Containers|au-dessus]]. On ne conserve jamais rien d'​utile seulement dans un container, il doit toujours pouvoir être considéré comme une sorte de moteur applicatif vierge ​!
  
 ===== Installation ===== ===== Installation =====
  • docker.1751830861.txt.gz
  • Dernière modification: Le 06/07/2025, 21:41
  • par krodelabestiole