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
docker [Le 08/02/2016, 15:15]
cafecho Mise en forme wiki
docker [Le 08/07/2025, 07:21] (Version actuelle)
krodelabestiole détails
Ligne 1: Ligne 1:
-{{tag>​Trusty ​Wily 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 [[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.
  
-**Docker** ​est un logiciel libre ([[wpfr>​Licence_Apache|Licence Apache 2.0]]) à mi-chemin entre la virtualisation applicative et l'​automatisationIl 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. +**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.
-<note info>​Dans l'esprit docker: **un processus = un conteneur**.\\ +
-Facteur à prendre ​en compte dans le choix LXC vs DOCKER.</​note>​+
  
-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 niveauIl utilise ​le noyau de l'​hôte ​et ne fait fonctionner que le strict nécessaire ​sur les invités.+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.
  
-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.+<note tip>Pour mettre en place un serveur [[:LAMP]] grâce à Docker, n'hésitez pas à consulter ​[[:docker_lamp|ce tutoriel]].</​note>​
  
-===== Pré-requis ​===== +<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>​ 
-  + 
-  * Disposer ​des [[:sudo|droits ​d'administration]]. +===== Fonctionnement ​===== 
-  Disposer ​d'​une ​connexion ​à Internet configurée ​et activée.+ 
 +==== Containers ==== 
 + 
 +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 ''​[[#​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 ''​[[#​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. 
 + 
 +La communication de l'​intérieur du container avec un autre container ou avec l'​hôte doit donc être paramétrée : 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 canal de communication. 
 + 
 +<​note>​Selon le paradigme Docker : **un processus = un conteneur**.\\ 
 +C'est un facteur à prendre en compte pour choisir entre [[:LXC]] et Docker.</​note>​ 
 + 
 +==== 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 simple et 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 ==== 
 + 
 +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.\\ 
 +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 =====
  
-==== Pour Trusty 14.04 et ultérieures ====+  * **Docker** est disponible dans les [[#Dépôts APT Ubuntu|dépôts officiels APT]] d'​Ubuntu. 
 +  * Il est aussi distribué par ses développeurs dans des versions plus récentes sur leur propre [[#Dépôt APT Docker|dépôt APT]]. 
 +  * Il existe aussi un paquet [[#snap]] maintenu par [[:​Canonical]].
  
-**Docker** fait partie des [[:depots|dépôts officiels]] à partir de [[:​trusty|Trusty 14.04]]. Il suffit ​d'[[:tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>docker.io]]**.+<​note>​ 
 +**[[https://​podman.io/​|Podman]]** est une alternative ​à **Docker**, qui en reprend presque exactement le fonctionnement et les commandes. Il est moins répandu mais il se propose ​d'en améliorer la sécurité en permettant son utilisation sans [[:sudo|privilège administrateur]].((Voir //[[https://​www.ionos.fr/​digitalguide/​serveur/​know-how/​podman-vs-docker/|Podman vsDocker : quel moteur de conteneur choisir ?]]//)) 
 +</​note>​
  
-==== Pour les versions précédentes ou si vous souhaitez obtenir les dernières versions de Docker ​====+==== Dépôts APT Ubuntu ​====
  
-=== En utilisant le script ​d'installation fourni par docker ​===+**Docker** est disponible dans les [[:​depots#​dépôts officiels]] ​d'Ubuntu.\\  
 +Pour l'​installer il suffit donc d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] ''​[[apt>​docker.io]]'',​ et le paquet ''​[[apt>​docker-compose-v2]]''​ pour profiter de [[#Docker Compose]].
  
-[[https://get.docker.com|Script à télécharger]]+<​note>​ 
 +Il existe aussi une version communautaire disponible sur les anciennes ​[[:versions]] d'​Ubuntu depuis le paquet ''​[[apt>​docker-ce]]''​. Cette version est cependant particulièrement ancienne, et aujourd'​hui déconseillée. 
 +</​note>​
  
-=== Manuellement ===+<note tip> 
 +Si on préfère **[[https://​podman.io/​|Podman]]** à **Docker**, il suffit d'​installer à la place les paquets ''​[[apt>​podman]]''​ et ''​[[apt>​podman-compose]]''​. 
 +</​note>​
  
-  - Tout d'abord, [[:tutoriel:​comment_modifier_un_fichier|ouvrez le fichier]] **/etc/apt/sources.list.d/docker.list** en modification,\\ puis y coller la ligne suivante: <file>deb http://get.docker.io/​ubuntu ​docker ​main</file>. +==== Dépôt APT Docker ==== 
-  - Télécharger la clé GPG et installer le package avec les [[commande_shell|commande]] suivantes saisies dans un [[:terminal]] :<​code>​sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 + 
-sudo apt-get update +C'est la méthode officiellement recommandée par les développeurs de Docker,((//[[https://​docs.docker.com/​engine/​install/​ubuntu/#​install-using-the-repository|Install using the apt repository]]//)) et celle qui permet de disposer des versions les plus à jour. 
-sudo apt-get install ​lxc-docker</​code>​+ 
 +<note tip> 
 +Vous trouverez ces informations concernant l'​installation de **Docker** sur Ubuntu en anglais sur son [[https://docs.docker.com/engine/​install/​ubuntu/​|site officiel]]N'​hésitez pas à consulter cette page pour vérifier l'​actualité des informations traduites ci-dessous. 
 +</​note>​ 
 + 
 +<note important>​ 
 +**Désinstaller les anciennes versions :** 
 + 
 +Les autre versions de Docker sont ou étaient appelées ''​docker''​''​docker.io''​ ou ''​docker-engine''​. Si celles-ci sont installées,​ désinstallez-les : 
 +<code bash> 
 +# pour vérifier ce qui est installé lié à docker ​: 
 +dpkg -l |grep -E "^ii.+docker"​ 
 +# puis supprimer 
 +sudo apt autoremove ​docker.io docker-compose 
 +</code
 +Le contenu de ''/​var/​lib/​docker/'',​ y compris les images, les conteneurs, les volumes ​et les réseaux, sont préservés. Si vous n'avez pas besoin de sauvegarder vos données existantes et que vous souhaitez commencer par une installation propre, reportez-vous à //[[https://​docs.docker.com/​engine/​install/​ubuntu/#​uninstall-docker-engine|uninstall Docker Engine]]//​(//​en//​). 
 +</​note>​ 
 + 
 +Ajouter la clé GPG officielle de Docker ​: 
 +<​code>​ 
 +sudo apt update 
 +sudo apt install ca-certificates curl 
 +sudo install ​-m 0755 -d /​etc/​apt/​keyrings 
 +sudo curl -fsSL https://​download.docker.com/​linux/​ubuntu/​gpg ​-o /​etc/​apt/​keyrings/​docker.asc 
 +sudo chmod a+r /​etc/​apt/​keyrings/​docker.asc 
 +</​code>​ 
 + 
 +Ajouter le dépôt aux sources APT : 
 +<​code>​ 
 +echo \ 
 +  "deb [arch=$(dpkg ​--print-architecture) signed-by=/​etc/​apt/​keyrings/​docker.asc] https://​download.docker.com/​linux/​ubuntu \ 
 +  $(. /​etc/​os-release && echo "​${UBUNTU_CODENAME:​-$VERSION_CODENAME}"​) stable"​ | \ 
 +  sudo tee /​etc/​apt/​sources.list.d/​docker.list > /dev/null 
 +sudo apt update 
 +</​code>​ 
 + 
 +Installer les paquets docker : 
 +<​code>​ 
 +sudo apt install ​docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 
 +</code
 + 
 +==== Snap ==== 
 + 
 +**Docker** est disponible en [[:snap]] depuis [[https://​snapcraft.io/​docker|Snapcraft]]. Ce [[:snap]] est généralement plus à jour que le paquet [[:deb]] des [[#dépôts APT Ubuntu]], mais un peu moins que celui du [[#dépôt APT Docker]]. 
 + 
 +On peut simplement installer l'​application ''​Docker''​ depuis le [[:snap store|centre d'​applications (Snap Store)]], ou installer le paquet ''​docker''​ en ligne de commande : 
 +<​code>​snap install docker</​code>​ 
 +[[#Docker Compose]] est inclus. 
 + 
 +==== Docker Desktop ==== 
 + 
 +Il existe aussi [[https://​docs.docker.com/​desktop/​|Docker Desktop]] qui inclut beaucoup de chose donc [[#Docker Compose]], [[https://​kubernetes.io/​|Kubernetes]]… 
 +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 [[:​virtualisation|machine virtuelle]] pour fonctionner,​ ce qui est un peu dommage… libre à vous ! 
 + 
 +<note tip> 
 +Pour profiter d'une interface graphique il est probablement bien plus pratique d'​utiliser [[https://​www.portainer.io/​|Portainer]],​ lui-même étant distribué en image Docker ! 
 +</note>
  
 ===== Configuration ===== ===== Configuration =====
  
-<note important>​Vous devez fermer et rouvrir votre session pour que les changements prennent effet, sinon vous risquez de rencontrer des erreurs de permissions.</​note>​+Dans un environnement privé, vous pouvez éventuellement ajouter votre utilisateur au groupe **docker** afin de manipuler les containers sans avoir à utiliser **sudo** systématiquement : 
 +<note important>​N'​ajoutez pas votre utilisateur au groupe docker sur un serveur accessible publiquement : cette méthode pose un problème de sécurité. Il devient en effet possible d'​élever les privilèges de l'​utilisateur sans entrer à nouveau de mot de passe. Si vous êtes sur un serveur en production n'​entrez pas cette commande et utilisez la commande **sudo docker** au lieu de **docker** pour l'​ensemble des opérations.</​note>​ 
 +<​code>​sudo usermod -aG docker $USER</​code>​ 
 +<note>Vous devez fermer et rouvrir votre session pour que les changements prennent effet.</​note>​ 
 + 
 +Une fois Docker installé, vous pouvez lancer le service : 
 + 
 +  sudo service docker start 
 + 
 +et vérifier s'il fonctionne correctement (n'​oubliez pas le //sudo// devant la commande docker si vous n'avez pas ajouté votre utilisateur au groupe //docker//) :
  
-<note tip>Si vous voulez vous éviter de taper //sudo// devant chaque commande Docker, ajoutez votre utilisateur au groupe Docker: <​code>​sudo addgroup [utilisateur] ​docker</​code></​note>​+  ​docker ​run hello-world
  
-Une fois Docker installé, vous pouvez lancer le service: +À la première exécution, ​Docker ​ne doit pas trouver l'​image de l'​application //​hello-word//​ en local. Il va alors tenter de télécharger la dernière version. En cas de réussite, il exécute l'​application qui affiche une simple page d'​explication sur la sortie standard et s'​arrête.
-<​code>​sudo service docker start</​code>​ +
-et vérifier s'il fonctionne correctement (n'​oubliez pas le //sudo// devant la commande docker si vous n'avez pas ajouté votre utilisateur au groupe Docker) +
-<​code>​docker run hello-world</​code>​ +
-À la première exécution, ​docker ​ne doit pas trouver l'​image de l'​application //​hello-word//​ en local. Il va alors tenter de télécharger la dernière version. En cas de réussite, il exécute l'​application qui affiche une simple page d'​explication sur la sortie standard et s'​arrête.+
  
 ===== Utilisation ===== ===== Utilisation =====
Ligne 54: Ligne 154:
 ==== Manipulation d’images ==== ==== Manipulation d’images ====
  
-Prendre une Debian sur le dépôt officiel de Docker et se connecter dessus+Prendre une Debian sur le dépôt officiel de Docker et se connecter dessus ​:
  
-<​code>​docker pull debian +<​code>​ 
-docker run -i -t debian /​bin/​bash</​code>​+docker pull debian 
 +docker run -i -t debian /bin/bash 
 +</​code>​
  
 Faire tout ce qu’on veut sur la nouvelle image Faire tout ce qu’on veut sur la nouvelle image
  
-<​code>​root@xxxxxx#​ …</​code>​+<​code>​ 
 +root@xxxxxx#​ … 
 +</​code>​
  
 Et sauvegarder les changements Et sauvegarder les changements
  
-<​code>​root@xxxxxx#​ exit +<​code>​ 
-docker commit xxxxxx le_nom_de_l_image</​code>​+root@xxxxxx#​ exit 
 +docker commit xxxxxx le_nom_de_l_image 
 +</​code>​ 
 + 
 +Supprimer une image : 
 + 
 +<​code>​ 
 +docker image rm id_ou_nom_de_l_image 
 +</​code>​ 
 +ou: 
 + 
 +<​code>​ 
 +docker rmi id_ou_nom_de_l_image 
 +</​code>​
  
 ==== Manipulation de conteneurs ==== ==== Manipulation de conteneurs ====
  
-<​code>​JOB1=$(docker run -d conteneur)+<​code>​ 
 +JOB1=$(docker run -d conteneur)
 docker logs $JOB1 docker logs $JOB1
-docker stop $JOB1</​code>​+docker stop $JOB1 
 +</​code>​
  
-Voir les conteneurs ​qui tournent ​:+Voir les conteneurs ​actifs ou les lister tous ou lister id des actifs ​:
  
-<​code>​docker ps +<​code>​ 
-docker ps -a</​code>​+docker ​container ​ps 
 +docker ​container ​ps -a 
 +docker container ps -q 
 +</​code>​
  
-Supprimer un conteneur ​supprimer tous les conteneurs :+Supprimer un conteneur ​ou supprimer tous les conteneurs :
  
-<​code>​docker rm $JOB1 +<​code>​ 
-docker rm id_du_conteneur +docker ​container ​rm $JOB1 
-docker rm `docker ps -a -q`</​code>​+docker ​container ​rm id_du_conteneur 
 +docker ​container ​rm $(docker ​container ​ps -a -q
 +</​code>​
  
-Supprimer une images :+==== Manipulation de volumes ====
  
-<​code>​docker rmi id_ou_nom_de_l_image</​code>​+Créer un volume
  
-==== Import ​Export ====+<​code>​ 
 +docker volume create le_nom_du_volume 
 +</code>
  
-Une des grandes forces de Docker ​c'est de pouvoir exporter et importer très facilement les images. ​+Lister les volumes 
 + 
 +<​code>​ 
 +docker volume ls 
 +</​code>​ 
 + 
 +Supprimer un ou plusieurs volumes (-f pour forcer la suppression) 
 +<​code>​ 
 +docker volume rm le_nom_du_volume1 le_nom_du_volume2 
 +</​code>​ 
 + 
 +Supprimer les volumes orphelins vue que avec l'​utilisation progressive de docker il y'aura pas mal de volumes orphelins qui prendraient beaucoup d'​espace disque 
 + 
 +<​code>​ 
 +docker volume rm $(docker volume ls -qf dangling=true) 
 +</​code>​ 
 + 
 + 
 +==== Import, export ==== 
 + 
 +Une des grandes forces de Docker est de pouvoir exporter et importer très facilement les images.
  
 Exporter un container en tar.gz : Exporter un container en tar.gz :
  
-<​code>​docker export 419eed6ff306 > nginx.tgz</​code>​+<​code>​ 
 +docker export 419eed6ff306 > nginx.tgz 
 +</​code>​
  
 Importer un tar.gz : Importer un tar.gz :
  
-<​code>​cat nginx.tgz | docker import - nginx</​code>​+<​code>​ 
 +docker import - nginx < nginx.tgz 
 +</​code>​
  
 ==== 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 :
  
-<code>+<file>
 # Apache et PHP dans un container # Apache et PHP dans un container
 # #
Ligne 114: Ligne 264:
  
 FROM     ​debian:​wheezy FROM     ​debian:​wheezy
-MAINTAINER Adminrezo "nico@adminrezo.fr"​+MAINTAINER Adminrezo "admin@adminrezo.fr"​
  
 ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND noninteractive
Ligne 139: Ligne 289:
  
 CMD source /​etc/​apache2/​envvars && exec /​usr/​sbin/​apache2 -DFOREGROUND CMD source /​etc/​apache2/​envvars && exec /​usr/​sbin/​apache2 -DFOREGROUND
-</code>+</file>
  
   * MAINTAINER : nom et mail de mainteneur du conteneur   * MAINTAINER : nom et mail de mainteneur du conteneur
Ligne 153: Ligne 303:
 Construire un conteneur : Construire un conteneur :
  
-<​code>​docker build -t nom_du_conteneur .</​code>​+<​code>​ 
 +docker build -t nom_du_conteneur . 
 +</​code>​ 
 + 
 +===== Divers ===== 
 + 
 +==== 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). 
 + 
 +  * Date de votre système et fuseau : <​code>​ 
 +date 
 +cat /​etc/​timezone</​code>​ 
 +  * Date du conteneur et fuseau : <​code>​ 
 +sudo docker attach CONTENEUR 
 +date 
 +cat /​etc/​timezone </​code>​ ou : <​code>​ 
 +docker exec CONTENEUR bash -c "date ;  cat /​etc/​timezone"​ 
 +</​code>​ 
 +  * Réglage du fuseau depuis le conteneur <​code>​ 
 +sudo docker attach CONTENEUR  
 +sudo dpkg-reconfigure tzdata 
 +</​code>​ (se détacher du conteneur : CTRL-p CTRL-q) 
 +<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>​ 
 +docker run -e TZ=Europe/​Amsterdam debian:​jessie date 
 +</​code>​ 
 +  * 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>​
  
 ===== Désinstallation ===== ===== Désinstallation =====
    
-Pour supprimer cette application,​ il suffit de [[:​tutoriel:​comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, la configuration globale de l'​application est conservée ​<​code>​sudo apt-get autoremove docker.io</​code>​ +Pour supprimer cette application,​ il suffit de [[:​tutoriel:​comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, la configuration globale de l'​application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
-ou supprimée. ​<​code>​sudo apt-get autoremove --purge docker.io</​code> ​Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.+
  
-===== Aller plus loin ===== +===== Voir aussi =====
- +
-  * [[http://​linuxfr.org/​news/​docker-tutoriel-pour-manipuler-les-conteneurs|Tutoriels et articles en français sur Docker]] +
-  * [[http://​docker.com/​|Documentation officielle]] +
-  * [[http://​www.it-connect.fr/​debuter-avec-docker-et-les-containers-sous-debian-8/​|Docker et les containers sous Debian 8]]+
  
 +  * [[:​docker_lamp]] Mettre en place un serveur web (LAMP) à base de conteneurs docker
 +  * [[tutoriel:​comment_installer_gitlab-ce_avec_docker_pour_son_poste_de_travail|Comment installer Gitlab-ce avec Docker pour son poste de travail]]
 +  * [[https://​linuxfr.org/​news/​docker-tutoriel-pour-manipuler-les-conteneurs|Tutoriels et articles en français sur Docker]]
 +  * [[https://​docs.docker.com/​|Documentation officielle]]
 +  * [[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://​podman.io/​|Podman]],​ une alternative à Docker
  
 ---- ----
  
-//​Contributeur principal: ??// +//​Contributeurs : [[:​utilisateurs:Chacmool]], [[:​utilisateurs:​chamblard]],​ [[:​utilisateurs:​krodelabestiole]]//
- +
-//​Contributeurs : [[utilisateur:Chacmool|Chacmool]]//+
  • docker.1454940910.txt.gz
  • Dernière modification: Le 08/02/2016, 15:15
  • par cafecho