Différences
Ci-dessous, les différences entre deux révisions de la page.
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 ===== |