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 10/12/2017, 17:35] – [Installation] 80.12.38.199 | 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:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | // | ||
| + | |||
| + | // | ||
| + | * // | ||
