Docker

De Codedev Wiki
Révision datée du 23 octobre 2021 à 17:04 par Christophedlr (discussion | contributions) (Page créée avec « == Préambule == '''Docker''' est un système de conteneur. Le but est de fournir un système de déploiement qui sera identique quelque soit le système. Ainsi, il suffit… »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

Préambule

Docker est un système de conteneur. Le but est de fournir un système de déploiement qui sera identique quelque soit le système. Ainsi, il suffit de configurer le conteneur Docker, et on a un environnement de développement par exemple ou un programme (par exemple un site internet), avec toutes les ressources nécessaires : les différents logiciels, dans la version qu'il faut etc.

Le tout reste indépendant du système, au sein du conteneur on a déjà un OS d'installé (obligatoirement un Linux), avec tout le nécessaire.

Installation

Windows ou MacOS

Il suffit d'installer Docker Desktop (version gratuite de Docker).

Linux

On doit installer Docker Community (version gratuite de Docker pour Linux).

apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

On installe ici, certains packages qui sont requis par Docker.

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Ici, on récupère la clé GPG et on ajoute le dépôt docker pour Debian (il faut adapter pour votre Linux, voyez sur la page de Docker).

apt update && apt-get install docker-ce docker-ce-cli

On peut ensuite installer Docker.

usermod -aG docker utilisateur On met à jour l'utilisateur pour l'ajouter au groupe docker. On doit redémarrer la session utilisateur pour la prise en compte.

Toute les commandes sont à réaliser avec les droits root, donc pensez à utiliser sudo si vous le faites depuis un compte utilisateur.

Sous Linux, nous n'avons pas d'obligation d'avoir un compte sur Docker Hub, mais c'est recommandé ; la commande docker login, nous permettra de nous connecter.

Commandes de Docker

run

Cette commande, permet de télécharger et démarrer un conteneur Docker. Si le conteneur est déjà présent en local et dans le référentiel, il le démarre, sinon il doit d'abord le télécharger une première fois.

La commande peut prendre plusieurs paramètres :

  • -d pour détacher le processus de la console
  • -p port source:port destination permet d'indiquer le port du serveur présent dans le conteneur, et sur quel port on l'aura sur notre machine


stop

Cette commande, permet de stopper l'exécution d'un conteneur Docker. On lui donne l'ID que nous fournis la commande docker ls.

ls

Cette commande, permet de lister les conteneurs Docker actuellement démarrés et obtenir l'ID.

pull

Cette commande, permet de télécharger une image Docker sur Docker Hub, mais sans l'exécuter.

images

Cette commande permet de lister les images Docker. Elle dispose de plusieurs options :

  • -a pour afficher la liste de toutes les images
  • -q pour n'afficher que les ID d'images

D'autres options sont présentes, il faut pour cela consulter l'aide.

image

Cette commande, permet de gérer les images Docker. Elle dispose de plusieurs sous-commandes :

  • build : pour créer une image Docker depuis un fichier dockerfile
  • ls : pour lister les images Docker
  • prune : pour supprimer les images inutilisée
  • pull : pour récupérer une image depuis Docker Hub
  • push : pour envoyer une image sur Docker Hub
  • rm : pour supprimer une ou plusieurs images
  • save : pour sauvegarder une ou plusieurs images dans une archive .tar

system

Cette commande, permet de gérer Docker lui même. Elle dispose de plusieurs sous-commandes :

  • df : pour afficher l'espace disque utilisé par les images docker
  • info : pour afficher les infos sur le système
  • prune : pour supprimer les données non-utilisée

exec

Cette commande, permet d'exécuter une commande sur un conteneur Docker actuellement en cours d'exécution.

build

Cette commande, permet de construire l'image Docker. L'option -t, permet d'indiquer le nom de l'image à créer.


dockerfile

Le fichier dockerfile, est le fichier servant à configurer le conteneur. Il fonctionne avec des instructions

FROM

Cette instruction, permet de lui indiquer sur quelle image il doit se baser. Attention au choix, car deux instructions FROM, ne fonctionneront pas. Aucune erreur, cependant c'est la seconde image qui est prise en compte, non les deux.

Pour PHP par exemple, il dispose de sa propre image Docker à utiliser.

ADD

Cette instruction, permet de lui indiquer les dossiers/fichiers à ajouter dans l'image. Le premier argument, correspond à l'emplacement actuel (souvent le même dossier que le fichier dockerfile car souvent dans le dossier projet). Le second argument, correspond à l'emplacement au sein de l'image Docker.

WORKDIR

Cette instruction, permet de lui indiquer, le dossier de travail ; c'est à dire qu'il va se placer dedans.

CMD

Cette instruction, permet de lui indiquer, une commande à exécuter ; par exemple lancer un serveur PHP ou Django etc. Elle est obligatoire, c'est la commande exécutée au démarrage de l'image.

RUN

Cette instruction, permet de lui indiquer une commande à exécuter, pour installer des packages par exemple, lancer une compilation et autres. A ne pas confondre avec CMD, qui lui va servir pour exécuter le serveur par exemple ou une commande particulière qui va réaliser le travail pour lequel l'image a été créée.

Attention, il est important de limiter le nombre d'instructions RUN pour limiter la taille prise par le conteneur (chaque instruction résulte par la création d'une couche qui lui correspond).

EXPOSE

Cette instruction, permet d'indiquer le port d'écoute.

VOLUME

Cette instruction, permet d'indiquer le répertoire partagé avec l'hôte. Cela permet de créer un conteneur pour le développement par exemple, et de partager un répertoire qui est le répertoire pour le projet, afin de pouvoir coder dedans via notre IDE.

.dockerignore

Le fonctionnement de se fichier est identique à celui du .gitignore de GIT : ignorer certains fichiers.

Astuces

Serveurs web

Pour PHP comme pour tout autre serveur web, il est nécessaire que l'écoute se fasse sur l'IP 0.0.0.0, sinon vous n'aurez pas accès au serveur web depuis votre hôte. Cette IP, indique qu'on écoute sur n'importe quelle adresse IP, on peut donc écouter sur localhost par exemple.

PHP

Il existe des conteneurs Docker pour PHP, cependant si vous souhaitez disposer d'un contrôle absolu, préférez l'usage d'un conteneur correspondant au Linux que vous souhaitez, et vous faite ensuite les installations dedans.