Bilan de la mise en pratique de Docker
Préparation
À ce stade des nos manipulations, il est fort probable que la commande docker ps -a
retourne un grand nombre de conteneurs sur votre machine. Avant de passer à un petit exercice de mise en pratique, il convient de supprimer tout les conteneurs existants, qui ne servent plus. Pour cela on peut simplement lancer :
docker rm -vf $(docker ps -a -q)
Sans rentrer dans les détails de la commande, elle va simplement lister les identifiants de touts les conteneurs et les passer en argument à une commande qui va les supprimer.
Base de données dans Docker
À l'aide des connaissances acquises et de la documentation de l'image postgres
sur le Docker Hub, nous avons le nécessaire pour déployer une base de données PostgreSQL avec Docker sur la machine, tout en garantissant son isolement réseau et la persistance des données.
Question
Donnez les commandes permettant de déployer une base de données PostgreSQL :
se trouvant sur un réseau privé Docker nommé
pg-net
persistant les données de la base sur le disque (les données ne doivent pas être perdues si l'on re-créé le conteneur) dans un dossier /root/bdd
avec un utilisateur snowden ayant un accès à une base prism avec le mot de passe nsa
Solution
Pour créer un réseau dédié, on utilise :
docker network create pg-net
Pour lancer notre conteneur, on utilise une commande similaire à celle-ci :
docker run -d --name pg-test -e POSTGRES_DB=prism -e POSTGRES_USER=snowden -e POSTGRES_PASSWORD=nsa -v /root/bdd:/var/lib/postgresql/data --net pg-net postgres
On lance un conteneur basé sur l'image postgres
et nommé pg-test
. On configure la base de donnée et l'utilisateur à l'aide de variables d'environnements passées via l'option -e
.
Pour assurer la persistance des données, on monte le dossier /root/bdd dans le dossier /var/lib/postgresql/data, là où se trouve les données de PostgreSQL.
Enfin, on connecte le conteneur dans notre réseau à l'aide de l'option --net
Question
Donnez une commande simple à lancer pour valider que la base de donnée est bien accessible dans le réseau pg-net
.
Indice
On peut utiliser un autre conteneur dans le même réseau pour se connecter à la base de données.
Solution
On lance un conteneur (basé sur postgres
pour avoir la commande psql) dans le même réseau Docker et l'on tente d’accéder à la base de données.
$ docker run -it --net pg-net postgres psql -h pg-test -U snowden prism
Password for user snowden:
psql (11.1 (Debian 11.1-1.pgdg90+1))
Type "help" for help.
prism=#
Après nous avoir demandé le mot de passe, on arrive à se connecter à la base de donnée que l'on fait tourner dans un conteneur isolé.