Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
docker [Le 08/02/2016, 15:34] – [Pour les versions précédentes ou si vous souhaitez obtenir les dernières versions de Docker]quelques coquilles cafecho | docker [Le 18/09/2020, 09:24] (Version actuelle) – [Méthode conseillée : installation depuis les dépôts officiels] ajout docker-compose bcag2 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | {{ : | ||
+ | ====== docker ====== | ||
+ | |||
+ | |||
+ | **Docker** est un logiciel libre (sous [[wpfr> | ||
+ | <note info> | ||
+ | Facteur à prendre en compte dans le choix LXC vs DOCKER.</ | ||
+ | |||
+ | Contrairement aux autres systèmes de (para) virtualisation, | ||
+ | |||
+ | Docker c'est aussi [[https:// | ||
+ | |||
+ | <note tip>Pour mettre en place un serveur LAMP grâce à Docker, n' | ||
+ | |||
+ | <note warning> | ||
+ | ===== Pré-requis | ||
+ | |||
+ | * Disposer des [[: | ||
+ | * Disposer d'une connexion à Internet configurée et activée. | ||
+ | |||
+ | ===== Installation ===== | ||
+ | ==== Méthode conseillée : installation depuis les dépôts officiels ==== | ||
+ | |||
+ | **Docker** fait partie des [[: | ||
+ | |||
+ | Il peut-être utile d' | ||
+ | <code bash>apt install docker-compose</ | ||
+ | |||
+ | ==== 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, | ||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // | ||
+ | |||
+ | // | ||
+ | * // |