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
Prochaine révision
Révision précédente
utilisateurs:krodelabestiole:brouillons:docker [Le 31/01/2021, 14:56]
krodelabestiole
utilisateurs:krodelabestiole:brouillons:docker [Le 01/01/2024, 19:31] (Version actuelle)
krodelabestiole [Docker Compose]
Ligne 5: Ligne 5:
 ====== Docker ====== ====== Docker ======
  
 +**Docker** est un logiciel libre de containérisation. Il permet de manipuler des conteneurs de logiciels. Avec Docker un conteneur est un système léger individuel permettant de faire tourner un logiciel, qui fournit un service. Il est donc particulièrement utilisé dans des contextes de [[:​serveur|serveurs]] ou de [[:cloud]].
  
-**Docker** est un logiciel libre (sous [[wpfr>​Licence_Apache|licence Apache 2.0]]) de containerisation. Il permet ​de manipuler des conteneurs ​de logiciels. Avec Docker un conteneur ​est un système léger individuel permettant de faire tourner un logiciel, qui fournit un service. Chaque conteneur correspond donc à un service et embarque toutes les dépendances et configurations nécessaires (on parle d'//​image//​). L'​idée est d'​isoler les services les uns des autres, ce qui apporte en sécurité et en souplesse, en permettant de les manipuler indépendamment. +Cette pratique se rapproche donc de la virtualisation ​(en isolant les éléments les uns des autres), mais apporte beaucoup plus de souplesse et de légèreté (seul le noyau natif de l'​hôte ​est utilisé). L'​idée est d'​isoler les services les uns des autres, ce qui apporte en sécurité et en souplesse, en permettant de les manipuler indépendamment.\\ 
 Docker fonctionne sur n'​importe quel système Linux, ainsi que sur Mac OS ou Windows (grâce à [[:​wsl|WSL2]]). Docker fonctionne sur n'​importe quel système Linux, ainsi que sur Mac OS ou Windows (grâce à [[:​wsl|WSL2]]).
  
-L'​intérêt principal de docker est de permettre de déployer des services simplement (quelques fichiers textes et lines de commande), indépendamment du système utilisés. Cela permet par ex. de déployer un environnement de développement ou de production en quelques minutes sur n'​importe quelle machine+L'​intérêt principal de docker est de permettre de déployer des services simplement (quelques fichiers textes et lignes ​de commande), indépendamment du système utilisés. Cela permet par ex. de déployer un environnement de développement ou de production en quelques minutes sur n'​importe quelle machine.
- +
-Cette pratique se rapproche donc de la virtualisation (en isolant les éléments les uns des autres), mais apporte beaucoup plus de souplesse et de légèreté (seul le noyau natif de l'​hôte est utilisé).+
  
 Docker fournit aussi [[https://​hub.docker.com|Docker Hub]], un dépôt central d'​images à partir duquel on peut télécharger et partager des applications sans avoir à réinventer la roue. Il s'agit souvent d'​images officielles fournies par les développeurs des applications. Docker fournit aussi [[https://​hub.docker.com|Docker Hub]], un dépôt central d'​images à partir duquel on peut télécharger et partager des applications sans avoir à réinventer la roue. Il s'agit souvent d'​images officielles fournies par les développeurs des applications.
 +En ce sens, Docker se rapproche de techniques de mise en paquet et de distribution de logiciels tels que [[:Snap]] et [[:​Flatpak]].
  
 <​note>​Il existe désormais une alternative à Docker, poussée par Red Hat. Il s'agit de [[https://​podman.io|Podman]]. La commande ''​podamn''​ reste très similaire à ''​docker''​ (au point que la documentation conseille de créer un alias de ''​docker''​ vers ''​podman''​),​ mais résout en particulier des problèmes de sécurité liés à Docker (escalade de privilège de l'​utilisateur qui lance les conteneurs).</​note>​ <​note>​Il existe désormais une alternative à Docker, poussée par Red Hat. Il s'agit de [[https://​podman.io|Podman]]. La commande ''​podamn''​ reste très similaire à ''​docker''​ (au point que la documentation conseille de créer un alias de ''​docker''​ vers ''​podman''​),​ mais résout en particulier des problèmes de sécurité liés à Docker (escalade de privilège de l'​utilisateur qui lance les conteneurs).</​note>​
  
-<note tip>Pour mettre en place un serveur LAMP grâce à Docker, n'​hésitez pas à consulter [[:​docker_lamp|ce tutoriel]].</​note>​+===== Fonctionnement =====
  
-===== Docker Compose =====+Docker introduit la notion d'//​image//,​ qui va servir de modèle de base depuis lequel sera instancié chaque conteneur. 
 + 
 +On peut créer ses propres images avec un fichier ''​Dockerfile'',​ ce qui revient à créer une instance Linux minimale sur laquelle on va installer et configurer les logiciels de son choix. On passe d'un ''​Dockerfile''​ à une image grâce à la commande ''​build''​. Cependant on part la plupart du temps d'une image créée par quelqu'​un d'​autre et rendue disponible sur le dépôt [[https://​hub.docker.com|Docker Hub]]. Le fichier ''​Dockerfile''​ peut alors aussi permettre de modifier ou d'​ajouter des choses à une image existante. 
 + 
 +Quand on lance une image on créé un container, dans lequel les données ne sont pas //​persistées//​ : il sera réinitialisé à chaque lancement.\\  
 +Pour conserver des données on peut utiliser des //volumes// (une autre notion Docker), ou //monter// des répertoires de l'​hôte dans le container. 
 + 
 +Les paramètres peuvent être gérés par des fichiers externes (qu'on peut au choix copier dans l'​image ou monter dans le container) ou par des arguments de la ligne de commandes (avec laquelle on lance le container). On peut utiliser [[#Docker Compose]] pour se simplifier la ligne de commande, et entrer ainsi dans la pratique du //​[[wpfr>​devops]]//​ en utilisant des fichiers pour décrire des environnements. 
 + 
 +==== Docker Compose ==== 
 + 
 +Docker s'​utilise en principe en ligne de commande (il existe cependant des outils comme [[#​Portainer]] pour gérer ses conteneurs graphiquement). 
 +Étant donné le nombre de paramètres de configuration nécessaires à l'​utilisation de certains conteneurs, cette manière de fonctionner n'est pas toujours pratique et donne des lignes de commande excessivement longues. 
 + 
 +Docker Compose est une extension de docker qui permet de déclarer ses conteneurs ainsi que tous leurs paramètres dans des fichiers de configuration (au format [[wpfr>​YAML]]). Cette manière de faire étant très pratique et courante, c'est celle que nous documenterons en particulier ici.
  
 ===== Installation ===== ===== Installation =====
  
-===== Pré-requis  ​=====+==== Pré-requis ​ ====
    
   * Disposer des [[:​sudo|droits d'​administration]] (ce qui n'est par contre pas indispensable avec [[https://​podman.io|Podman]]).   * Disposer des [[:​sudo|droits d'​administration]] (ce qui n'est par contre pas indispensable avec [[https://​podman.io|Podman]]).
Ligne 31: Ligne 44:
 ==== Méthode conseillée : installation depuis les dépôts officiels ==== ==== Méthode conseillée : installation depuis les dépôts officiels ====
  
-**Docker** ​fait partie des [[:​depots|dépôts officiels]] à partir d’[[:​trusty|Ubuntu 14.04 LTS]]. Il suffit ​donc d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​docker.io]]**.+Pour installer ​**Docker** ​il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​docker.io]]**. ​Docker Compose est quant à lui disponible via le paquet **[[apt>​docker-compose]]** :
  
-Il peut-être utile d'​installer également **docker-compose** pour travailler avec plusieurs conteneurs, comme illustré dans la page [[docker_lamp#​methode_avancee|docker_lamp]] : +<​code>​sudo apt install ​docker.io ​docker-compose</​code>​
-<​code ​bash>apt install docker-compose</​code>​+
  
 ==== Méthode conseillée par le site docker.com ==== ==== Méthode conseillée par le site docker.com ====
Ligne 40: Ligne 52:
 Il existe 2 versions de Docker : Docker CE (Community Edition) et Docker EE (Enterprise Edition). La version CE est gratuite et open-source,​ et correspond à la version packagée par défaut dans les dépôts Ubuntu, mais en version plus récente. C'est donc l'​installation de cette version qui est décrite ci-après, et qui utilise le dépôt officiel mis à disposition par le site Docker. Il existe 2 versions de Docker : Docker CE (Community Edition) et Docker EE (Enterprise Edition). La version CE est gratuite et open-source,​ et correspond à la version packagée par défaut dans les dépôts Ubuntu, mais en version plus récente. C'est donc l'​installation de cette version qui est décrite ci-après, et qui utilise le dépôt officiel mis à disposition par le site Docker.
 (page d'​origine en anglais : https://​docs.docker.com/​install/​linux/​docker-ce/​ubuntu/#​install-docker-ce) (page d'​origine en anglais : https://​docs.docker.com/​install/​linux/​docker-ce/​ubuntu/#​install-docker-ce)
 +
 === Configurer le dépôt === === Configurer le dépôt ===
 +
 Mettre à jour APT : Mettre à jour APT :
 <​code>​$ sudo apt-get update</​code>​ <​code>​$ sudo apt-get update</​code>​
Ligne 68: Ligne 82:
  
 === Installer Docker CE === === Installer Docker CE ===
 +
 Mettre à jour l'​index APT : Mettre à jour l'​index APT :
 <​code>​$ sudo apt-get update</​code>​ <​code>​$ sudo apt-get update</​code>​
 Installer la dernière version de Docker CE : Installer la dernière version de Docker CE :
 <​code>​$ sudo apt-get install docker-ce</​code>​ <​code>​$ sudo apt-get install docker-ce</​code>​
 +
 ==== Pour les versions précédentes ou pour obtenir les dernières versions de Docker ==== ==== Pour les versions précédentes ou pour obtenir les dernières versions de Docker ====
  
Ligne 84: Ligne 100:
 </​code>​ </​code>​
  
-=== Manuellement === +=== Manuellement === 
 (testé avec succès sur Ubuntu 16.04 64Bits) (testé avec succès sur Ubuntu 16.04 64Bits)
  
Ligne 96: Ligne 113:
  
 ===== Configuration ===== ===== Configuration =====
- 
  
 Dans un environnement privé, vous pouvez éventuellement ajouter votre utilisateur au groupe **docker** afin de manipuler les containers sans avoir à utiliser **sudo** systématiquement : Dans un environnement privé, vous pouvez éventuellement ajouter votre utilisateur au groupe **docker** afin de manipuler les containers sans avoir à utiliser **sudo** systématiquement :
Ligne 191: Ligne 207:
 ==== Automatisation avec un Dockerfile ==== ==== Automatisation avec un Dockerfile ====
  
-Le dockerfile est un fichier texte qui inclut une liste d'​actions à exécuter pour construire une image. ​+Le dockerfile est un fichier texte qui inclut une liste d'​actions à exécuter pour construire une image.
  
 Par exemple une image simpliste de Apache pourrait ressembler à ça : Par exemple une image simpliste de Apache pourrait ressembler à ça :
Ligne 291: Ligne 307:
 ---- ----
  
-//Contributeur principal ​: [[:​utilisateur:​chacmool|Chacmool]]// +//Contributeurs ​//[[:​utilisateur:​Chacmool]], [[:utilisateurs:​chamblard]], ​[[:​utilisateurs:​krodelabestiole]]//
- +
-//​Contributeurs ​// +
-  * //[[:​utilisateurs:​chamblard|chamblard]]//+
  • utilisateurs/krodelabestiole/brouillons/docker.1612101361.txt.gz
  • Dernière modification: Le 31/01/2021, 14:56
  • par krodelabestiole