Compare commits
19 Commits
9335a9f50b
...
master
Author | SHA1 | Date | |
---|---|---|---|
1223860fea | |||
7531dad012 | |||
5d2ea70dbe | |||
dcc25d224d | |||
cbcb5d2b29 | |||
c554bd9660 | |||
616342dc55 | |||
e96303a7a3 | |||
da1f83ffe9 | |||
5ceefaf3a6 | |||
1bc22a5175 | |||
a528e2783a | |||
9163fac41e | |||
425fc6a9d7 | |||
8ff80f6e8a | |||
73ded03618 | |||
710fc970fc | |||
0a083cbc49 | |||
33a8810f1f |
1
.obsidian/app.json
vendored
1
.obsidian/app.json
vendored
@@ -1 +0,0 @@
|
||||
{}
|
3
.obsidian/appearance.json
vendored
3
.obsidian/appearance.json
vendored
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"accentColor": ""
|
||||
}
|
30
.obsidian/core-plugins-migration.json
vendored
30
.obsidian/core-plugins-migration.json
vendored
@@ -1,30 +0,0 @@
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"properties": false,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"bookmarks": true,
|
||||
"markdown-importer": false,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": false
|
||||
}
|
20
.obsidian/core-plugins.json
vendored
20
.obsidian/core-plugins.json
vendored
@@ -1,20 +0,0 @@
|
||||
[
|
||||
"file-explorer",
|
||||
"global-search",
|
||||
"switcher",
|
||||
"graph",
|
||||
"backlink",
|
||||
"canvas",
|
||||
"outgoing-link",
|
||||
"tag-pane",
|
||||
"page-preview",
|
||||
"daily-notes",
|
||||
"templates",
|
||||
"note-composer",
|
||||
"command-palette",
|
||||
"editor-status",
|
||||
"bookmarks",
|
||||
"outline",
|
||||
"word-count",
|
||||
"file-recovery"
|
||||
]
|
155
.obsidian/workspace.json
vendored
155
.obsidian/workspace.json
vendored
@@ -1,155 +0,0 @@
|
||||
{
|
||||
"main": {
|
||||
"id": "5592aab14f66c563",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "9e1cbafd0088d3c3",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "4ff11dd078ab66bf",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "README.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "b94b45054e7382f7",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "3747cb665b3512ab",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "ff2e07594e5df190",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0e0ebac4a3febaa0",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "16abcfdb9b2d6541",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300
|
||||
},
|
||||
"right": {
|
||||
"id": "b59bd8f018fd0080",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "c556a5f4dbffcf8b",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "7f5703816bb04d4d",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "README.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "54691d14942355f2",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "README.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "534e289695f35e27",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "6669f469ad5e0124",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "README.md"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300,
|
||||
"collapsed": true
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"switcher:Ouvrir le sélecteur rapide": false,
|
||||
"graph:Ouvrir la vue graphique": false,
|
||||
"canvas:Créer une nouvelle toile": false,
|
||||
"daily-notes:Ouvrir la note quotidienne": false,
|
||||
"templates:Insérer le modèle": false,
|
||||
"command-palette:Ouvrir la palette de commandes": false
|
||||
}
|
||||
},
|
||||
"active": "4ff11dd078ab66bf",
|
||||
"lastOpenFiles": [
|
||||
"img",
|
||||
"Nouveau dossier",
|
||||
"Pasted image 20240320140145.png"
|
||||
]
|
||||
}
|
36
README.md
36
README.md
@@ -34,7 +34,9 @@ services:
|
||||
- redisinsight_data:/db
|
||||
```
|
||||
|
||||
⚠️ Attention ne pas oublier de mettre à la fin du ficher un bloc volumes
|
||||
> [!CAUTION]
|
||||
> Ne pas oublier de mettre à la fin du ficher un bloc volumes
|
||||
|
||||
```yml
|
||||
volumes:
|
||||
redis_data:
|
||||
@@ -56,6 +58,9 @@ services:
|
||||
replicas: 2
|
||||
```
|
||||
|
||||
> Attention !
|
||||
> Il n'y a qu'un seul `services` par dockercompose
|
||||
|
||||
**Étape 6** : Pour déployer le server NGINX il faut ajouter ceci dans le fichier ``docker-compose.yml``
|
||||
```yml
|
||||
services:
|
||||
@@ -146,7 +151,9 @@ services:
|
||||
- "9090:9090"
|
||||
```
|
||||
|
||||
⚠️ Attention, il ne faut pas oublier de faire le fichier de configuration de prometheus (prometheus.yml) et ensuite de la mettre dans un dossier prometheus
|
||||
> Attention !
|
||||
> Il ne faut pas oublier de faire le fichier de configuration de prometheus (prometheus.yml) et ensuite de la mettre dans un dossier prometheus
|
||||
|
||||
```yml
|
||||
global:
|
||||
scrape_interval: 1m
|
||||
@@ -185,10 +192,27 @@ services:
|
||||
Pour ce connecter on peut utiliser un compte par défaut, on doit juste mettre "admin" comme nom d'utilisateur et comme mot de passe.
|
||||
On peut skip aussi la demande de changer le mot de passe juste après.
|
||||
|
||||
**Étape 6** : Une fois sur la page d'accueil, on va aller sur l'onglet "Connections" et appuyer sur "add new connection"
|
||||
**Étape 6** : On doit ensuiter ajouter une source de données Prometheus.
|
||||
|
||||
**Étape 7** : Dans la barre de recherche on écrit prometheus, on clique ensuite sur Prometheus et enfin "Add new data source" en haut à droite
|
||||
Soit, une fois sur la page d'accueil, on va sur l'onglet "Connections" et on appuie sur "add new connection", puis, dans la barre de recherche, on écrit prometheus. On clique ensuite sur Prometheus et enfin "Add new data source" en haut à droite. Maintenant on doit configurer la connection avec prometheus. Il suffit juste de mettre le lien "http://prometheus:9090" dans la catégorie Connection et ensuite appuyer sur "Save & Test" à la fin de la page.
|
||||
|
||||
**Étape 8** : Maintenant on doit configurer la configuration de la connection avec prometheus. Il suffit juste de mettre le lien "http://prometheus:9090" dans la catégorie Connection et ensuite appuyer sur "Save & Test" à la fin de la page.
|
||||
Soit on fait :
|
||||
1. Chercher `Data source` dans le champ de recherche Grafana
|
||||
2. Cliquer sur `Add new data source`
|
||||
3. Choisir Prometheus
|
||||
4. Dans le champ `Connection > Prometheus serveur URL`, entrer `http://...:9090` en remplaçant les ... par le nom donné au service prometheus dans le docker compose (ici, 'prometheus')
|
||||
5. Descendre en bas de la page et cliquer sur `Save & test`
|
||||
|
||||
**Étape 9** : Il faut ensuite cliquer sur "Data sources", on peut alors voir qu'on a bien réussi à connecter prometheus. Dorénavant il faut cliquer sur "Build a dashboard" et ensuite sur
|
||||
|
||||
**Étape 7** PoOn va ensuite créer un dashboard :
|
||||
1. Cliquer sur `Dashboard` dans le menu à gauche
|
||||
2. Cliquer sur `New`, `New dashboard`
|
||||
3. Cliquer sur `Import dashboard`
|
||||
4. Cliquer sur le lien `grafana.com/dashboards` et chercher un dashboard Grafana pour cAdvisor (ou node-exporter). Récupérer son ID (j'ai trouvé 1860 pour node-exporter et 14282 pour cAdvisor)
|
||||
5. Revenir sur le Grafana en localhost, entrer l'ID dans le champ et cliquer sur `Load`
|
||||
6. Dans le champ tout en bas, choisir la data source Prometheus créée auparavant
|
||||
7. Cliquer sur `import`
|
||||
|
||||
Il faut créer un dashboard pou cAdvisor et un autre pour node-exporter.
|
||||
On peut consulter les dashboards dans le menu dashboard (à gauche).
|
||||
On doit voir les noms des conteneurs dans le dashboard cAdvisor, mais pas dans le node-exporter.
|
116
explication_dockerfile.md
Normal file
116
explication_dockerfile.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# DockerFile
|
||||
|
||||
On peut consulter la documentation des instructions [sur le site de Docker](https://docs.docker.com/reference/dockerfile/#label).
|
||||
|
||||
## Fichier
|
||||
|
||||
```dockerfile
|
||||
FROM httpd:alpine3.17
|
||||
|
||||
LABEL maintainer="Tom Moguljak"
|
||||
LABEL version="1.8"
|
||||
LABEL tp="3"
|
||||
|
||||
COPY ./dayScheduler/ /usr/local/apache2/htdocs/
|
||||
|
||||
RUN sed -i 's/Work Day Scheduler/Tom Moguljak/g' /usr/local/apache2/htdocs/index.html
|
||||
|
||||
ENV school="IUT"
|
||||
ENV level="1.8"
|
||||
|
||||
HEALTHCHECK --interval=1m --timeout=1s \
|
||||
CMD curl --fail http://localhost:80/ || exit 1
|
||||
```
|
||||
|
||||
## Commandes
|
||||
|
||||
### Définir l'image utilisée
|
||||
|
||||
```dockerfile
|
||||
FROM httpd:alpine3.17
|
||||
```
|
||||
Tout dockerfile doit commencer par une ligne `FROM`. Pour trouver l'image, on va sur DockerHub et on cherche le nom de l'image qu'on veut (ici c'est httpd). On va préférer les images officielles, marquées par un badge vert avec une étoile. On clique sur le lien, on va dans l'onglet `Tags` et on trouve la version la plus récente,ou la version demandée dans l'énoncé (on peut utiliser le filtre). Il suffit ensuite de copier le code donné sur le site, ici c'est `docker pull httpd:alpine3.19`, mais on enlève le "docker pull".
|
||||
|
||||
>Il faut à tout prix éviter la version "latest" ou de prendre la version en haut de page, sans rien après le nom de l'image (ex: httpd) et qui correspond à la version latest.
|
||||
|
||||
### Exécuter une commande
|
||||
|
||||
```dockerfile
|
||||
RUN sed -i 's/Work Day Scheduler/Tom Moguljak/g' /usr/local/apache2/htdocs/index.html
|
||||
```
|
||||
Une ligne `RUN` permet d'exécuter une commande shell/bash au moment du `build`. Ici on a utilisé la commande `sed` : on cherche l'expression `Work Day Scheduler` et on remplace par `Tom Moguljak` dans le fichier `/usr/local/apache2/` de l'image.
|
||||
|
||||
### Ajouter une étiquette
|
||||
|
||||
```dockerfile
|
||||
LABEL maintainer="Tom Moguljak"
|
||||
```
|
||||
Une ligne `LABEL` permet de créer une étiquette pour l'image. Ici le nom de l'étiquette est "maintainer" et elle contient la valeur "Tom Moguljak".
|
||||
|
||||
Quand on a plusieurs étiquettes à définir, on peut le faire en plusieurs lignes :
|
||||
```dockerfile
|
||||
LABEL maintainer="Tom Moguljak"
|
||||
LABEL version="1.8"
|
||||
LABEL tp="3"
|
||||
```
|
||||
|
||||
Ou en une seule, en séparant les définitions par un espace :
|
||||
```dockerfile
|
||||
LABEL maintainer="Tom Moguljak" version="1.8" tp="3"
|
||||
```
|
||||
|
||||
### Ajouter une variable d'environnement
|
||||
|
||||
```dockerfile
|
||||
ENV school="IUT"
|
||||
```
|
||||
Une ligne `ENV` permet de créer une variable d'environnement dans l'image. Ici le nom de la variable d'environnement est "school" et elle contient la valeur "IUT".
|
||||
|
||||
Comme pour les étiquettes, quand on a plusieurs variables d'environnement à définir, on peut le faire en plusieurs lignes :
|
||||
```dockerfile
|
||||
ENV school="IUT"
|
||||
ENV level="1.8"
|
||||
```
|
||||
|
||||
Ou en une seule, en séparant les définitions par un espace :
|
||||
```dockerfile
|
||||
ENV school="IUT" level="1.8"
|
||||
```
|
||||
|
||||
### Ajouter le contenu d'un dossier
|
||||
|
||||
```dockerfile
|
||||
COPY ./dayScheduler/ /usr/local/apache2/htdocs/
|
||||
```
|
||||
Une ligne `COPY` permet d'ajouter le contenu d'un dossier présent sur la machine (ici le dossier "dayScheduler") à l'image (ici le chemin dans l'image est /usr/local/apache2/htdocs/).
|
||||
|
||||
> Si il est demandé d'ajouter le contenu d'un git, il faut faire git clone d'abord
|
||||
|
||||
### Faire des tests de survie
|
||||
|
||||
```dockerfile
|
||||
HEALTHCHECK --interval=1m --timeout=1s CMD curl --fail http://localhost:80/ || exit 1
|
||||
```
|
||||
Une ligne `HEALTHCHECK` permet de faire des tests de survie. Ici le test a un intervale de 1 seconde.
|
||||
|
||||
### Autres commandes
|
||||
|
||||
- `ADD` : copie des fichiers dans l'image (accepte les URL)
|
||||
- `EXPOSE` : déclare les ports d'écoute du conteneur
|
||||
- `VOLUME` : déclare lespoints de montage des volumes
|
||||
- `USER` : définit l'utilisateur (groupe) qui exécutera l'image
|
||||
- `WORKDIR` : définit le répertoire de travail
|
||||
|
||||
## Création : `docker build`
|
||||
|
||||
Pour créer l'image, on utilise la [commande `docker build`](https://docs.docker.com/reference/cli/docker/image/build/), au format
|
||||
```shell
|
||||
docker build -t nom:version répertoire
|
||||
```
|
||||
|
||||
L'option `-t` est suivie du nom et de la version de l'image.
|
||||
|
||||
Exemple : on construit une image que l'on va nommée "mapremiereimage" en version 1.0 dans le répertoire de travail actuel (.)
|
||||
```shell
|
||||
docker build -t mapremiereimage:1.0 .
|
||||
```
|
31
explication_prometheus.md
Normal file
31
explication_prometheus.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Fichier `prometheus.yml`
|
||||
|
||||
```yml
|
||||
global:
|
||||
scrape_interval: 1m
|
||||
evaluation_interval: 1m
|
||||
|
||||
scrape_configs:
|
||||
- job_name: 'prometheus'
|
||||
|
||||
scrape_interval: 1m
|
||||
|
||||
static_configs:
|
||||
- targets: ['localhost:9090']
|
||||
|
||||
- job_name: 'node'
|
||||
static_configs:
|
||||
- targets: ['node-exporter:9100']
|
||||
|
||||
- job_name: 'cadvisor'
|
||||
static_configs:
|
||||
- targets: ['cadvisor:8080']
|
||||
```
|
||||
|
||||
La partie `global` définit la fréquence des scrapes et des évaluations pour toutes les connexions.
|
||||
|
||||
La partie `scrape_configs` permet de configurer la connexion à chacun des services. On veut que prometheus "écoute" tous les exporters (cAdvisor, node-exporter) et lui même. Elle contient une liste (à tirets) des "jobs", c'est-à-dire des services auxquels prometheus est connecté.
|
||||
|
||||
Le `job-name` doit être exact (consulter la documentation sur [le site de Prometheus](https://prometheus.io/docs/guides/cadvisor/)).
|
||||
|
||||
La partie `static-configs` doit aussi être suivie d'une liste à tirets. Là aussi, les `targets` doivent être exactes. Le nombre indique le port auquel le service est connecté.
|
106
explications_dockercompose.md
Normal file
106
explications_dockercompose.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Fichier `docker-compose.yml`
|
||||
|
||||
## Structure
|
||||
|
||||
```yml
|
||||
services :
|
||||
nomA:
|
||||
...
|
||||
...:
|
||||
- ...
|
||||
(définition du serveur)
|
||||
|
||||
nomB:
|
||||
...
|
||||
...:
|
||||
- ...
|
||||
(définition du serveur)
|
||||
|
||||
volumes :
|
||||
vol1 : ...
|
||||
vol2 : ...
|
||||
|
||||
networks :
|
||||
net1 : ...
|
||||
net2 : ...
|
||||
```
|
||||
> /!\ Ce ne sont pas des indentations mais des doubles espaces
|
||||
|
||||
## Définition des services
|
||||
|
||||
On définit les services dans la partie `services`. On commence par le nom qu'on veut donner au service, puis on le définit.
|
||||
```yml
|
||||
services:
|
||||
php:
|
||||
image: windok/php-redis
|
||||
restart: always
|
||||
volumes:
|
||||
- ./web:/usr/share/nginx/html
|
||||
environment:
|
||||
- NOM : "moguljak"
|
||||
- PRENOM : "tom"
|
||||
deploy:
|
||||
replicas: 2
|
||||
networks:
|
||||
- front
|
||||
- back
|
||||
```
|
||||
|
||||
`image: ...` sert à définir l'image utilisée. On les trouve sur le site [Docker Hub](https://hub.docker.com/). Il faut pivilégier les images officielles, signalées par un badge vert avec une étoile.
|
||||
Pour utiliser une image faite grâce à un dockerfile, ????
|
||||
|
||||
`ports: ...` est suivi de la liste (avec tirets) des ports que l'on souhaite exposer. En général, si l'énoncé dit d'exposer le port 1234, il faut noter `1234:1234`. Le nombre à gauche désigne le port sur la machine, et celui à droite, le port sur la VM. Si le port n'est pas donné (pour cAdvisor, Grafana et autres, par exemple), il est disponible en ligne.
|
||||
|
||||
`volumes: ...` est suivi de la liste des volumes que l'on souhaite monter dans la VM. Chaque ligne est au format `path-machine:path-VM`, c'est à dire que s'il on demande de partager le dossier web (présent sur la machine) dans /usr/share/nginx/html, on écrira `- ./web:/usr/share/nginx/html`. Si le volume est un des volumes sont définis dans la partie `volumes` extérieure à la partie `services` (voir plus loin), on remplace le path dans la machine par le nom donné au volume.
|
||||
|
||||
`networks: ...` est suivi de la liste des réseaux auxquels on veut que ce servce aie accès. Si on utilise des exporters (cAdvisor, node-exporter...), tous les services devront avoir au moins un réseau en commun avec l'exporter. Les réseaux sont définis dans la partie `networks` extérieure à la partie `services` (voir plus loin)
|
||||
|
||||
`environment: ...` est suivi de la liste des variables d'environnement qu'on veut créer dans ce service. Chaque ligne est au format `nom:valeur`.
|
||||
|
||||
> Les éléments dits "suivi d'une liste" doivent toujopurs être suivis de listes à tirets, même s'il n'y a qu'un seul élément.
|
||||
|
||||
`restart: always` indique que le restart est continu.
|
||||
|
||||
Pour déployer plusieurs instances d'un même service, on utilise :
|
||||
```yml
|
||||
deploy:
|
||||
replicas: 2
|
||||
```
|
||||
|
||||
## Définition des réseaux
|
||||
|
||||
On définit les réseaux dans la partie `networks`. Elle est différente de la partie networks à l'intérieur de la définition d'un service, et n'est pas identée.
|
||||
```yml
|
||||
networks:
|
||||
front:
|
||||
back:
|
||||
```
|
||||
On donne le nom puis la définition du réseau. Ici, pas besoin de définition
|
||||
|
||||
## Définition des volumes
|
||||
|
||||
On définit les volumes dans la partie `volumes`. Elle est différente de la partie volumes à l'intérieur de la définition d'un service, et n'est pas identée.
|
||||
```yml
|
||||
volumes:
|
||||
redis_data:
|
||||
redisinsight_data:
|
||||
```
|
||||
On donne le nom puis la définition du réseau. Ici, pas besoin de définition car le volume est vide. On peut aussi ajouter {} après les : pour signifier que la volume est vide
|
||||
|
||||
# Utilisation
|
||||
|
||||
On lance le fichier avec `docker compose up -d` (pas de tiret entre docker et compose !!!). Le `-d` sert a lancé l'activité en arrière-plan et donc à pouvoir utiliser le terminal.
|
||||
Si le fichier utiliise un autre nom que `docker-compose.yml`, on utilise `docker compose -f nom-fichier.yml up -d`
|
||||
|
||||
Pour savoir si le docker compose a fonctionné, on vérifie que la commande `docker compose up` n'a pas fait d'erreur. On lance la commande `docker ps` et on vérifie que la nouvelle VM est affichée.
|
||||
|
||||
Pour se connecter à un conteneur (ici `php` du dossier `tp4`), on fait `docker exec -it tp4-php-1`
|
||||
- `tp4` est le nom du dossier
|
||||
- `php` est le nom du conteneur
|
||||
- on met le nombre même si on n'a créé qu'un seul conteneur avec ce nom
|
||||
|
||||
Pour créer un réseau externe (qui regroupe plusieurs machines séparées), on utilise la commande `docker network create nom_network`.
|
||||
|
||||
Pour vérfier les réseaux présents, on fait `docker inspect`. Pour vérifier les réseaux présents dans un conteneur en particulier, on ajoute le nom du conteneur à la fin de la commande en suivant la grammaire dossier-fichier-numéro.
|
||||
|
||||
Pour supprimer tous les conteneurs, on fait `docker compose down`.
|
Reference in New Issue
Block a user