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 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'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. | + | **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 niveau. Il 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 vs. Docker : 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]]// | + |