Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
utilisateurs:krodelabestiole:brouillons:docker [Le 31/01/2021, 14:24] – créée krodelabestiole | utilisateurs:krodelabestiole:brouillons:docker [Le 31/01/2021, 18:30] (Version actuelle) – [Docker Compose] krodelabestiole | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | {{ : | ||
+ | |||
+ | ====== Docker ====== | ||
+ | |||
+ | **Docker** est un logiciel libre (sous [[wpfr> | ||
+ | |||
+ | Docker fonctionne sur n' | ||
+ | |||
+ | L' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | Docker fournit aussi [[https:// | ||
+ | En ce sens, Docker se rapproche de techniques de mise en paquet et de distribution de logiciels tels que [[:Snap]] et [[: | ||
+ | |||
+ | < | ||
+ | |||
+ | <note tip>Pour mettre en place un serveur LAMP grâce à Docker, n' | ||
+ | |||
+ | ==== Docker Compose ==== | ||
+ | |||
+ | Docker s' | ||
+ | Étant donné le nombre de paramètres de configuration nécessaires à l' | ||
+ | |||
+ | Docker Compose est une application tierce qui permet de déclarer ses conteneurs ainsi que tous leurs paramètres dans des fichiers de configuration (au format [[wpfr> | ||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | ==== Pré-requis | ||
+ | |||
+ | * Disposer des [[: | ||
+ | * Disposer d'une connexion à Internet configurée et activée. | ||
+ | |||
+ | ==== Méthode conseillée : installation depuis les dépôts officiels ==== | ||
+ | |||
+ | Pour installer **Docker** il suffit d' | ||
+ | |||
+ | < | ||
+ | |||
+ | ==== 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, | ||
+ | (page d' | ||
+ | |||
+ | === Configurer le dépôt === | ||
+ | |||
+ | Mettre à jour APT : | ||
+ | < | ||
+ | Installer les paquets permettant à APT d' | ||
+ | < | ||
+ | apt-transport-https \ | ||
+ | ca-certificates \ | ||
+ | curl \ | ||
+ | software-properties-common</ | ||
+ | Puis ajouter la clé GPG du site de Docker : | ||
+ | < | ||
+ | Vérifiez que vous avez bien installé cette clé en comparant avec les 8 derniers caractères de l' | ||
+ | 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 | ||
+ | Pour cela, taper : | ||
+ | < | ||
+ | |||
+ | pub | ||
+ | Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 | ||
+ | uid Docker Release (CE deb) < | ||
+ | sub | ||
+ | |||
+ | Pointer vers le dépôt de la version " | ||
+ | < | ||
+ | " | ||
+ | | ||
+ | | ||
+ | |||
+ | === Installer Docker CE === | ||
+ | |||
+ | Mettre à jour l' | ||
+ | < | ||
+ | Installer la dernière version de Docker CE : | ||
+ | < | ||
+ | |||
+ | ==== Pour les versions précédentes ou pour obtenir les dernières versions de Docker ==== | ||
+ | |||
+ | === En utilisant le script d' | ||
+ | |||
+ | Le script est à [[https:// | ||
+ | |||
+ | - Télécharger le script et executer le script< | ||
+ | wget https:// | ||
+ | chmod +x script.sh | ||
+ | ./script.sh | ||
+ | </ | ||
+ | |||
+ | === Manuellement === | ||
+ | |||
+ | (testé avec succès sur Ubuntu 16.04 64Bits) | ||
+ | |||
+ | |||
+ | - Tout d' | ||
+ | - Télécharger la clé GPG et installer le package avec les [[commande_shell|commandes]] suivantes saisies dans un [[: | ||
+ | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install lxc-docker | ||
+ | </ | ||
+ | |||
+ | ===== 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 : | ||
+ | <note important> | ||
+ | < | ||
+ | < | ||
+ | |||
+ | Une fois Docker installé, vous pouvez lancer le service : | ||
+ | |||
+ | sudo service docker start | ||
+ | |||
+ | et vérifier s'il fonctionne correctement (n' | ||
+ | |||
+ | docker run hello-world | ||
+ | |||
+ | À la première exécution, Docker ne doit pas trouver l' | ||
+ | |||
+ | ===== Utilisation ===== | ||
+ | |||
+ | ==== Manipulation d’images ==== | ||
+ | |||
+ | Prendre une Debian sur le dépôt officiel de Docker et se connecter dessus : | ||
+ | |||
+ | < | ||
+ | docker pull debian | ||
+ | docker run -i -t debian /bin/bash | ||
+ | </ | ||
+ | |||
+ | Faire tout ce qu’on veut sur la nouvelle image | ||
+ | |||
+ | < | ||
+ | root@xxxxxx# | ||
+ | </ | ||
+ | |||
+ | Et sauvegarder les changements | ||
+ | |||
+ | < | ||
+ | root@xxxxxx# | ||
+ | docker commit xxxxxx le_nom_de_l_image | ||
+ | </ | ||
+ | |||
+ | Supprimer une image : | ||
+ | |||
+ | < | ||
+ | docker image rm id_ou_nom_de_l_image | ||
+ | </ | ||
+ | ou: | ||
+ | |||
+ | < | ||
+ | docker rmi id_ou_nom_de_l_image | ||
+ | </ | ||
+ | ==== Manipulation de conteneurs ==== | ||
+ | |||
+ | < | ||
+ | JOB1=$(docker run -d conteneur) | ||
+ | docker logs $JOB1 | ||
+ | docker stop $JOB1 | ||
+ | </ | ||
+ | |||
+ | Voir les conteneurs actifs ou les lister tous ou lister id des actifs : | ||
+ | |||
+ | < | ||
+ | docker container ps | ||
+ | docker container ps -a | ||
+ | docker container ps -q | ||
+ | </ | ||
+ | |||
+ | Supprimer un conteneur ou supprimer tous les conteneurs : | ||
+ | |||
+ | < | ||
+ | docker container rm $JOB1 | ||
+ | docker container rm id_du_conteneur | ||
+ | docker container rm $(docker container ps -a -q) | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== 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 : | ||
+ | |||
+ | < | ||
+ | docker export 419eed6ff306 > nginx.tgz | ||
+ | </ | ||
+ | |||
+ | Importer un tar.gz : | ||
+ | |||
+ | < | ||
+ | docker import - nginx < nginx.tgz | ||
+ | </ | ||
+ | |||
+ | ==== Automatisation avec un Dockerfile ==== | ||
+ | |||
+ | Le dockerfile est un fichier texte qui inclut une liste d' | ||
+ | |||
+ | Par exemple une image simpliste de Apache pourrait ressembler à ça : | ||
+ | |||
+ | < | ||
+ | # Apache et PHP dans un container | ||
+ | # | ||
+ | # VERSION | ||
+ | # | ||
+ | |||
+ | FROM | ||
+ | MAINTAINER Adminrezo " | ||
+ | |||
+ | ENV DEBIAN_FRONTEND noninteractive | ||
+ | |||
+ | # Depots, mises a jour et installs | ||
+ | |||
+ | RUN (apt-get update && apt-get upgrade -y -q && apt-get dist-upgrade -y -q && apt-get -y -q autoclean && apt-get -y -q autoremove) | ||
+ | RUN apt-get install -y -q apache2 libapache2-mod-php5 php5 supervisor | ||
+ | RUN rm / | ||
+ | ADD index.php / | ||
+ | |||
+ | # Config de Apache | ||
+ | |||
+ | ENV APACHE_RUN_USER www-data | ||
+ | ENV APACHE_RUN_GROUP www-data | ||
+ | ENV APACHE_LOG_DIR / | ||
+ | |||
+ | EXPOSE 80 | ||
+ | |||
+ | # Demarrage des services | ||
+ | |||
+ | RUN mkdir -p / | ||
+ | ADD apache.conf / | ||
+ | |||
+ | CMD source / | ||
+ | </ | ||
+ | |||
+ | * MAINTAINER : nom et mail de mainteneur du conteneur | ||
+ | * FROM : image de base (ubuntu, debian) | ||
+ | * VOLUME : Point de montage | ||
+ | * 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). | ||
+ | * CMD : commande qui s’exécute au démarrage 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. | ||
+ | * EXPOSE : Port(s) à exposer à l’exterieur. | ||
+ | |||
+ | Construire un conteneur : | ||
+ | |||
+ | < | ||
+ | docker build -t nom_du_conteneur . | ||
+ | </ | ||
+ | |||
+ | ===== Divers ===== | ||
+ | ==== Date et heure ==== | ||
+ | La date et l' | ||
+ | |||
+ | * Date de votre système et fuseau : < | ||
+ | date | ||
+ | cat / | ||
+ | * Date du conteneur et fuseau : < | ||
+ | sudo docker attach CONTENEUR | ||
+ | date | ||
+ | cat / | ||
+ | docker exec CONTENEUR bash -c "date ; cat / | ||
+ | </ | ||
+ | * Réglage du fuseau depuis le conteneur < | ||
+ | sudo docker attach CONTENEUR | ||
+ | sudo dpkg-reconfigure tzdata | ||
+ | </ | ||
+ | <note important> | ||
+ | * Créer un conteneur avec la time Zone configurée. Pour cela utiliser la variable d' | ||
+ | docker run -e TZ=Europe/ | ||
+ | </ | ||
+ | * Dans le Dockerfile : ajouter la ligne < | ||
+ | RUN ln -snf / | ||
+ | |||
+ | |||
+ | ===== Désinstallation ===== | ||
+ | |||
+ | Pour supprimer cette application, | ||
+ | |||
+ | ===== Logiciels tiers ===== | ||
+ | |||
+ | ==== Traefik ==== | ||
+ | |||
+ | ==== Portainer ==== | ||
+ | |||
+ | ==== Statping ==== | ||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // | ||
+ | |||
+ | // | ||
+ | * // |