| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| docker [Le 23/09/2025, 11:14] – [Docker Compose] ortograf krodelabestiole | docker [Le 20/04/2026, 10:44] (Version actuelle) – [Voir aussi] ajout lien vers article sur podman de Stephane Robert bcag2 |
|---|
| |
| {{ :docker_container_engine_logo.png?200|}} | {{ :docker_container_engine_logo.png?200|}} |
| ====== 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 [[wpfr>Conteneur_(virtualisation)|virtualisation de haut niveau]].\\ | **[[wpfr>Docker_(logiciel)|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. Ceci allège grandement les images invitées et les ressources nécessaires à leur fonctionnement tout en assouplissant la distribution de celles-ci. | 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. |
| |
| <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>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> |
| | Depuis Ubuntu [[:questing|Questing 25.10]], le paquet ''[[apt>docker]]'' des [[#Dépôts APT Ubuntu|dépôts Ubuntu officiels]] n'installe plus **[[wpfr>Docker_(logiciel)|Docker]]**, mais **[[wpfr>Podman]]**, qui est une alternative similaire (à quelques détails près), et apporte une souplesse qui permet une meilleurs sécurité. |
| | |
| | La transition peut se faire de manière relativement transparente. La différence principale est qu'il n'y a plus de processus (//daemon//) principal centralisé. |
| | </note> |
| | |
| | <note important>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 ===== |
| </file> | </file> |
| |
| * MAINTAINER : nom et mail de mainteneur du conteneur | * ''MAINTAINER'' : nom et mail de mainteneur du conteneur |
| * FROM : image de base (ubuntu, debian) | * ''FROM'' : image de base (ubuntu, debian) |
| * VOLUME : Point de montage | * ''VOLUME'' : Point de montage |
| * RUN : commande à exécuter pour installer le conteneur. | * ''RUN'' : commande à exécuter pour installer le conteneur. |
| * ENTRYPOINT : commande qui s’exécute au démarrage du conteneur (une seule sera exécutée). | * ''ENTRYPOINT'' : commande qui s’exécute au démarrage du conteneur (une seule sera exécutée). |
| * CMD : commande qui s’exécute au démarrage du conteneur. | * ''CMD'' : commande qui s’exécute au démarrage du conteneur. |
| * ADD : Copier un fichier du répertoire courant dans le filesystem du conteneur. | * ''ADD'' : Copier un fichier du répertoire courant dans le filesystem du conteneur. |
| * USER : utilisateur qui exécute les commandes dans le conteneur. | * ''USER'' : utilisateur qui exécute les commandes dans le conteneur. |
| * EXPOSE : Port(s) à exposer à l’exterieur. | * ''EXPOSE'' : Port(s) à exposer à l’exterieur. |
| |
| Construire un conteneur : | Construire un conteneur : |
| <note important>Cette technique ci-dessus n'est pas forcément pertinente/persistante. Préférer ce qui suit : </note> | <note important>Cette technique ci-dessus n'est pas forcément pertinente/persistante. Préférer ce qui suit : </note> |
| * Créer un conteneur avec la time Zone configurée. Pour cela utiliser la variable d'environnement "TZ" (voir [[https://serverfault.com/questions/683605/docker-container-time-timezone-will-not-reflect-changes|ce post]] ) <code> | * Créer un conteneur avec la time Zone configurée. Pour cela utiliser la variable d'environnement "TZ" (voir [[https://serverfault.com/questions/683605/docker-container-time-timezone-will-not-reflect-changes|ce post]] ) <code> |
| docker run -e TZ=Europe/Amsterdam debian:jessie date | docker run -e TZ=Europe/Paris debian:jessie date |
| </code> | </code> |
| * Dans le Dockerfile : ajouter la ligne <code>ENV TZ Europe/Amsterdam </code> ou encore : <code>ENV TZ=America/Los_Angeles | * Dans le Dockerfile : ajouter la ligne <file>ENV TZ Europe/Paris</file> ou encore : <file>ENV TZ=Europe/Paris |
| RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone </code> | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone</file> |
| | * ou avec [[#Docker Compose]] dans le fichier ''[[https://docs.docker.com/compose/intro/compose-application-model/#illustrative-example|docker-compose.yml]]'' :<file> |
| | environment: |
| | - TZ=Europe/Paris</file> |
| |
| ===== Désinstallation ===== | ===== Désinstallation ===== |
| * [[https://xataz.developpez.com/tutoriels/utilisation-docker/|Tutoriel sur developpez.com (mis à jour en mai 2017)]] | * [[https://xataz.developpez.com/tutoriels/utilisation-docker/|Tutoriel sur developpez.com (mis à jour en mai 2017)]] |
| * [[https://www.it-connect.fr/debuter-avec-docker-et-les-containers-sous-debian-8/|Docker et les containers sous Debian 8 (oct 2014)]] | * [[https://www.it-connect.fr/debuter-avec-docker-et-les-containers-sous-debian-8/|Docker et les containers sous Debian 8 (oct 2014)]] |
| * [[https://podman.io/|Podman]], une alternative à Docker | * [[https://podman.io/|Podman]], une alternative à Docker, [[https://blog.stephane-robert.info/docs/conteneurs/moteurs-conteneurs/podman/|article sur Podman de Stéphane Robert]] (FR) |
| |
| ---- | ---- |
| |
| //Contributeurs : [[:utilisateurs:Chacmool]], [[:utilisateurs:chamblard]], [[:utilisateurs:krodelabestiole]]// | //Contributeurs : [[:utilisateurs:Chacmool]], [[:utilisateurs:chamblard]], [[:utilisateurs:krodelabestiole]]...// |