Déployer des containers (PostgreSQL + pgAdmin4) sur un réseau Docker personnalisé avec la
commande docker run.
Ctrl + `).
http://localhost:PORT. Depuis un autre poste du
réseau, utilisez l'IP de votre machine Windows (ipconfig dans PowerShell).
On commence par créer un dossier dédié au projet. C'est une bonne habitude de toujours organiser ses projets Docker dans des dossiers séparés :
mkdir -p ~/docker-run-lab
cd ~/docker-run-lab
Par défaut, chaque container Docker est isolé. Pour que deux containers puissent se parler (par exemple pgAdmin qui doit se connecter à PostgreSQL), il faut les mettre sur le même réseau :
docker network create mon_reseau
docker network ls
Vous devez voir mon_reseau dans la liste avec le driver bridge.
bridge par défaut, les containers ne peuvent pas se joindre par leur nom.
Avec un réseau personnalisé, Docker fournit la résolution DNS automatique entre les
containers.
PostgreSQL est une base de données. On va le lancer dans un container Docker avec une seule commande. Chaque option est expliquée dans le tableau en dessous :
docker run -d --name postgres_db --network mon_reseau -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=Password -e POSTGRES_DB=mydb -v ./pg_data:/var/lib/postgresql/data postgres:16
| Option | Description |
|---|---|
-d |
Mode détaché (arrière-plan) |
--name postgres_db |
Nom du container — servira aussi de nom DNS sur le réseau |
--network mon_reseau |
Connecte au réseau personnalisé créé à l'étape 2 |
-e POSTGRES_USER=admin |
Nom de l'utilisateur de la base de données |
-e POSTGRES_PASSWORD=Password |
Mot de passe de l'utilisateur |
-e POSTGRES_DB=mydb |
Nom de la base de données créée au démarrage |
-v ./pg_data:/var/lib/postgresql/data |
Volume : les données sont stockées dans ./pg_data dans le même dossier |
postgres:16 |
Image PostgreSQL version 16 depuis Docker Hub |
-p sur PostgreSQL
On n'expose pas le port 5432 sur l'hôte — seul pgAdmin (sur le même réseau Docker) a besoin d'y
accéder. C'est plus sécurisé : la base de données n'est pas accessible depuis l'extérieur.
docker run -d --name pgadmin --network mon_reseau -e [email protected] -e PGADMIN_DEFAULT_PASSWORD=Password -p 8080:80 -v ./pgadmin_data:/var/lib/pgadmin dpage/pgadmin4
| Option | Description |
|---|---|
--name pgadmin |
Nom du container |
--network mon_reseau |
Même réseau que PostgreSQL — obligatoire pour communiquer |
-e PGADMIN_DEFAULT_EMAIL |
Email de connexion à l'interface web pgAdmin |
-e PGADMIN_DEFAULT_PASSWORD |
Mot de passe de connexion à pgAdmin |
-p 8080:80 |
Port 8080 de votre PC → port 80 du container |
-v ./pgadmin_data:/var/lib/pgadmin |
Volume pour persister la configuration pgAdmin dans le même dossier |
pgAdmin4 sera accessible sur http://localhost:8080.
http://localhost:8080 dans un navigateur.[email protected] / Password.MonPostgres| Champ | Valeur |
|---|---|
| Host name/address | postgres_db (nom du container !) |
| Port | 5432 |
| Username | admin |
| Password | Password |
postgres_db (et non une IP) grâce au réseau
Docker personnalisé qui fournit la résolution DNS.
docker ps
docker network inspect mon_reseau
Vous verrez les deux containers (postgres_db et pgadmin) avec leurs IP
internes.
docker logs postgres_db
docker logs pgadmin
docker exec pgadmin ping -c 2 postgres_db
docker stop postgres_db pgadmin
docker rm postgres_db pgadmin
docker network rm mon_reseau
docker-run-lab/
├── pg_data/ # Données PostgreSQL
└── pgadmin_data/ # Configuration pgAdmin
postgres_db), sans avoir besoin de connaître son IP. Les données sont
persistées dans ./pg_data/ et ./pgadmin_data/.