TP - les volumes Docker
Observer l’installation de Portainer
Section titled “Observer l’installation de Portainer”Si vous aviez déjà créé le conteneur Portainer, vous pouvez le relancer en faisant docker start portainer, sinon créez-le comme suit :
docker volume create portainer_datadocker run --detach --name portainer \ -p 9000:9000 \ -v portainer_data:/data \ -v /var/run/docker.sock:/var/run/docker.sock \ portainer/portainer-ce-
Visitez ensuite la page http://localhost:9000 pour accéder à l’interface.
-
Créez votre user admin avec le formulaire.
-
Explorez l’interface de Portainer.
-
Supprimez le conteneur portainer et recréez le. Les données persistent-t-elles ?
-
Supprimez le conteneur et recréez le sans le
-v portainer_data:/data. Que remarque-t-on ? -
Supprimez le conteneur et recréez le sans le
-v /var/run/docker.sock:/var/run/docker.sock. Que remarque-t-on ?
Remarque : pour que Portainer puisse fonctionner et contrôler Docker lui-même depuis l’intérieur du conteneur il est nécessaire de lui donner accès au socket de l’API Docker de l’hôte grâce au bind mount ci-dessus.
Facultatif : utiliser VOLUME avec microblog
Section titled “Facultatif : utiliser VOLUME avec microblog”- Clonons le repo
microblogailleurs :
git clone https://github.com/uptime-formation/microblog/ --branch tp2-dockerfile microblog-volume-
Ouvrons ça avec VSCode :
codium microblog-volume -
Lire le
Dockerfilede l’applicationmicroblog.
Un volume Docker apparaît comme un dossier à l’intérieur du conteneur.
Nous allons faire apparaître le volume Docker comme un dossier à l’emplacement /data sur le conteneur.
- Pour que l’app Python soit au courant de l’emplacement de la base de données, ajoutez à votre
Dockerfileune variable d’environnementDATABASE_URLainsi (cette variable est lue par le programme Python) :
ENV DATABASE_URL=sqlite:////data/app.dbCela indique que l’on va demander à Python d’utiliser SQLite pour stocker la base de données comme un unique fichier au format .db (SQLite) dans un dossier accessible par le conteneur. On a en fait indiqué à l’app Python que chemin de la base de données est :
/data/app.db
- Ajouter au
Dockerfileune instructionVOLUMEpour stocker la base de données SQLite de l’application.
Voici le Dockerfile complet :
FROM python:3.9-alpine
COPY ./requirements.txt /requirements.txtRUN pip3 install -r requirements.txtENV FLASK_APP microblog.py
COPY ./ /microblogWORKDIR /microblog
ENV CONTEXT PROD
EXPOSE 5000
ENV DATABASE_URL=sqlite:////data/app.dbVOLUME ["/data"]
CMD ["./boot.sh"]- Créez un volume nommé appelé
microblog_db, et lancez un conteneur l’utilisant, créez un compte et écrivez un message. - Vérifier que le volume nommé est bien utilisé en branchant un deuxième conteneur
microblogutilisant le même volume nommé.