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 10/11/2024, 18:09]
Amiralgaby [docker] deux tirets => devient un tiret. correction
docker [Le 03/07/2025, 23:28] (Version actuelle)
krodelabestiole + fonctionnement / suppr infos obsolètes / mise en forme
Ligne 1: Ligne 1:
-{{tag>​Trusty Xenial virtualisation}} +{{tag>​Trusty Xenial ​serveur ​virtualisation}}
-----+
  
 {{ :​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 virtualisation de haut niveau.
-**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 complète le conteneur Linux LXC (il n'​utilise plus LXC depuis peu) en isolant ​les processus les uns des autres pour créer une virtualisation de haut niveau.+
 <note info>​Dans l'​esprit docker: **un processus = un conteneur**.\\ <note info>​Dans l'​esprit docker: **un processus = un conteneur**.\\
 Facteur à prendre en compte dans le choix LXC vs DOCKER.</​note>​ Facteur à prendre en compte dans le choix LXC vs DOCKER.</​note>​
  
-Contrairement aux autres systèmes de (para) virtualisation,​ **Docker** nembarque pas un système d’exploitation invité mais ne soccupe 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 autres systèmes de (para)virtualisation,​ **Docker** n'embarque pas un système d’exploitation invité 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.
  
-Docker ​c'est aussi [[https://registry.hub.docker.com/​|un dépôt d'​images]] à partir duquel vous pouvez télécharger et partager des applications sans avoir à réinventer la roue.+Docker ​permet aussi de partager, télécharger et installer facilement des applications depuis un dépôt d'images, ​[[https://​hub.docker.com/​|Docker Hub]].
  
-<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>​À 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>​ 
-===== Pré-requis  ​===== + 
-  +===== Fonctionnement ​===== 
-  * Disposer ​des [[:sudo|droits ​d'administration]]. + 
-  * Disposer ​d'​une ​connexion ​à Internet configurée ​et activée.+==== Containers ==== 
 + 
 +Docker fonctionne en différenciant les containers (qui hébergent chacun un service), de 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. Cala 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).\\ 
 +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.\\ 
 +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
 + 
 +La communication entre l'​intérieur du container et l'​hôte,​ ou avec un autre container, ajoute donc un niveau de complexité. Les containers sont des bacs à sable, leur contenu est isolé comme derrière un [[:​pare-feu]] global (c'est un principe qu'on retrouve avec [[:​Flatpak]] par exemple, et cela assure une certaine sécurité //par design//​).\\ 
 +Pour utiliser un container on peut faire correspondre un port interne à un port externe, un répertoire interne à un répertoire externe, lui passer les [[:​variables ​d'environnement]] de son choix, etc. : il faut définir chaque moyen de communication. 
 + 
 +==== Docker Compose ==== 
 + 
 +Tout ces paramètres peuvent évidemment rendre la ligne de commande assez longue !\\ 
 +C'est là l'​intérêt du fichier ''​[[https://​docs.docker.com/​compose/​intro/​compose-application-model/#​illustrative-example|docker-compose.yml]]''​ qui les décrit en [[wpfr>​YAML]],​ un format particulièrement lisible ! 
 + 
 +Un seul fichier ''​docker-compose.yml''​ permet de décrire plusieurs containers (pour un serveur [[:LAMP]] par exemple [[:​apache2|Apache]],​ [[:​php|PHP-FPM]],​ [[:​MariaDB]],​ [[https://​github.com/​mailhog/​MailHog|MailHog]],​ etc.).\\ 
 +Le déploiement d'un environnement complet pour une, voire plusieurs application(s) web peut alors se résumer ​à la récupération d'un ''​docker-compose.yml''​ (parfois accompagné d'​autres fichiers : ''​Dockerfile'',​ fichiers de configuration destinés à être copiés dans le container, etc.) suivie de la commande : 
 + 
 +  docker compose up 
 + 
 +La définition complète de l'​environnement pèse ainsi seulement quelques kilooctets, ​et son partage ou sa migration vers une nouvelle machine sont extrêmement rapides et faciles. 
 + 
 +==== Non-persistance ==== 
 + 
 +Un autre niveau de complexité vient du 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.\\ 
 +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 !
  
 ===== Installation ===== ===== Installation =====
 +
 ==== Méthode conseillée : installation depuis les dépôts officiels ==== ==== Méthode conseillée : installation depuis les dépôts officiels ====
  
Ligne 31: Ligne 57:
  
 ==== Méthode conseillée par le site docker.com ==== ==== Méthode conseillée par le site docker.com ====
 +
 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)
 +
 === Désinstaller les anciennes versions === === Désinstaller les anciennes versions ===
 +
 Les anciennes versions de Docker étaient appelées docker, docker.io ou docker-engine. Si celles-ci sont installées,​ désinstallez-les :​ Les anciennes versions de Docker étaient appelées docker, docker.io ou docker-engine. Si celles-ci sont installées,​ désinstallez-les :​
 <code bash> <code bash>
Ligne 44: Ligne 73:
  
 === Configurer le dépôt === === Configurer le dépôt ===
 +
 Les étapes ci-dessous ne font que reprendre les instructions officielles accessibles sur [[https://​docs.docker.com/​engine/​install/​ubuntu/#​install-using-the-repository]]\\ Les étapes ci-dessous ne font que reprendre les instructions officielles accessibles sur [[https://​docs.docker.com/​engine/​install/​ubuntu/#​install-using-the-repository]]\\
 Mettre à jour APT : Mettre à jour APT :
Ligne 70: Ligne 100:
  
 === Installer Docker CE === === Installer Docker CE ===
 +
 Mettre à jour l'​index APT : Mettre à jour l'​index APT :
 <code bash>​sudo apt update</​code>​ <code bash>​sudo apt update</​code>​
Ligne 81: Ligne 112:
 # qui doit vous afficher l'aide de compose # qui doit vous afficher l'aide de compose
 </​code>​ </​code>​
-==== Pour les versions précédentes ou pour obtenir les dernières versions de Docker ==== 
- 
-=== En utilisant le script d'​installation fourni par Docker === 
  
-Le script est à [[https://​get.docker.com|télécharger depuis le site officiel]] de Docker.+==== Docker ​Desktop ====
  
-- Télécharger le script et executer le script<​code>​ 
-wget https://​get.docker.com/​ -O script.sh 
-chmod +x script.sh 
-./script.sh 
-</​code>​ 
- 
-=== Manuellement === 
-(testé avec succès sur Ubuntu 16.04 64Bits) 
- 
- 
-  - Tout d'​abord,​ [[:​tutoriel:​comment_modifier_un_fichier|ouvrez le fichier]] **/​etc/​apt/​sources.list.d/​docker.list** en modification,​ puis collez-y la ligne suivante : <​file>​deb http://​get.docker.io/​ubuntu docker main</​file>​ 
-  - Télécharger la clé GPG et installer le package avec les [[commande_shell|commandes]] suivantes saisies dans un [[:​terminal]] :<​code>​ 
-sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 
-sudo apt-get update 
-sudo apt-get install lxc-docker 
-</​code>​ 
- 
-==== Docker Desktop ==== 
 Il existe aussi docker-desktop qui inclue beaucoup de chose donc //​compose//,​ //​kubernetes//​… [[https://​docs.docker.com/​desktop/​]] (EN)\\ Il existe aussi docker-desktop qui inclue beaucoup de chose donc //​compose//,​ //​kubernetes//​… [[https://​docs.docker.com/​desktop/​]] (EN)\\
 et une interface graphique… MAIS la page [[https://​docs.docker.com/​desktop/​install/​linux-install/​]] (EN) précise bien que sous linux, cela nécessite une VM pour fonctionner,​ ce qui est un peu dommage… libre à vous ! et une interface graphique… MAIS la page [[https://​docs.docker.com/​desktop/​install/​linux-install/​]] (EN) précise bien que sous linux, cela nécessite une VM pour fonctionner,​ ce qui est un peu dommage… libre à vous !
 +
 ===== 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 159: Ligne 169:
 docker rmi id_ou_nom_de_l_image docker rmi id_ou_nom_de_l_image
 </​code>​ </​code>​
 +
 ==== Manipulation de conteneurs ==== ==== Manipulation de conteneurs ====
  
Ligne 184: Ligne 195:
  
 ==== Manipulation de volumes ==== ==== Manipulation de volumes ====
 +
 Créer un volume Créer un volume
  
Ligne 281: Ligne 293:
  
 ===== Divers ===== ===== Divers =====
 +
 ==== Date et heure ==== ==== Date et heure ====
 +
 La date et l'​heure du conteneur est basée sur celle du système hôte. Cependant il est possible de constater un écart d'​heure entre le système et le conteneur. Ceci est dû au fait que  le conteneur peut-être configuré sur un autre fuseau horaire (timezone). La date et l'​heure du conteneur est basée sur celle du système hôte. Cependant il est possible de constater un écart d'​heure entre le système et le conteneur. Ceci est dû au fait que  le conteneur peut-être configuré sur un autre fuseau horaire (timezone).
  
Ligne 303: Ligne 317:
   * 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 <​code>​ENV TZ Europe/​Amsterdam </​code>​ ou encore : <​code>​ENV TZ=America/​Los_Angeles
 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 </​code>​
- 
  
 ===== Désinstallation ===== ===== Désinstallation =====
Ligne 320: Ligne 333:
 ---- ----
  
-//Contributeur principal ​: [[:​utilisateurs:​chacmool|Chacmool]]// +//Contributeurs ​: [[:​utilisateurs:​Chacmool]][[:​utilisateurs:​chamblard]], [[:​utilisateurs:​krodelabestiole]]//
- +
-//​Contributeurs : // +
-  * //[[:​utilisateurs:​chamblard|chamblard]]//+
  • docker.txt
  • Dernière modification: Le 03/07/2025, 23:28
  • par krodelabestiole
  • Actuellement bloqué par: krodelabestiole