Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
|
informatique:docker:volumedocker [2023/11/23 10:33] benoit créée |
informatique:docker:volumedocker [2023/11/23 10:35] (Version actuelle) benoit [Type TmpFs] |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Gestion des volumes sous Docker ====== | ====== Gestion des volumes sous Docker ====== | ||
| + | |||
| + | ===== Introduction ===== | ||
| L'objectif des volumes est de pouvoir utiliser des données persistantes dans les conteneurs (sauf pour le tmpfs). | L'objectif des volumes est de pouvoir utiliser des données persistantes dans les conteneurs (sauf pour le tmpfs). | ||
| Ligne 7: | Ligne 9: | ||
| - Type **Bind** : Permet de monter un dossier de l'hôte dans un dossier du conteneur. Les données du dossier ne seront pas initialisées par celle de l'image. | - Type **Bind** : Permet de monter un dossier de l'hôte dans un dossier du conteneur. Les données du dossier ne seront pas initialisées par celle de l'image. | ||
| - Type **tmpfs** : Permet d'utiliser la mémoire RAM comme espace de stockage. Utile pour charger des données rapidement. | - Type **tmpfs** : Permet d'utiliser la mémoire RAM comme espace de stockage. Utile pour charger des données rapidement. | ||
| + | |||
| + | ===== Type Volume ===== | ||
| + | |||
| + | Lister les volumes : | ||
| + | docker volume ls | ||
| + | |||
| + | Créer un volume nommé ''MyVolume'' : | ||
| + | docker volume create MyVolume | ||
| + | |||
| + | Ci-dessous pour démarrer un conteneur en utilisant le volume ''MyVolume'' qui sera monté dans le dossier ''/mnt/vol_docker'' du conteneur : | ||
| + | docker run -d --name MyContainer -v MyVolume:/mnt/vol_docker ubuntu | ||
| + | |||
| + | ou | ||
| + | docker run -d --name MyContainer --mount type=bind,source=MyVolume,destination=/mnt/vol_docker ubuntu | ||
| + | | ||
| + | | ||
| + | Pour identifier où sont stockées les données de ''MyVolume'' sur la machine hôte : | ||
| + | docker volume inspect MyVolume | ||
| + | |||
| + | Exemple de résultat attendu : | ||
| + | [ | ||
| + | { | ||
| + | "CreatedAt": "2023-11-17T11:06:32Z", | ||
| + | "Driver": "local", | ||
| + | "Labels": null, | ||
| + | "Mountpoint": "/var/lib/docker/volumes/MyVolume/_data", | ||
| + | "Name": "MyVolume", | ||
| + | "Options": null, | ||
| + | "Scope": "local" | ||
| + | } | ||
| + | ] | ||
| + | |||
| + | :!: Les données des volumes sont stockées dans le répertoire ''/var/lib/docker/volumes/'' de la machine hôte. Les données de ''MyVolume'' sont stockées dans le répertoire ''/var/lib/docker/volumes/MyVolume/_data''. | ||
| + | |||
| + | Pour identifier les conteneurs qui utilisent le volume ''MyVolume'' : | ||
| + | docker ps -a --filter volume=MyVolume | ||
| + | |||
| + | Exemple de résultat attendu : | ||
| + | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | ||
| + | b3f7ec23a377 httpd "httpd-foreground" 29 minutes ago Up 29 minutes 80/tcp MyContainer | ||
| + | |||
| + | |||
| + | Pour supprimer le volume ''MyVolume'' : | ||
| + | docker volume rm MyVolume | ||
| + | |||
| + | :!: Remarque : Les conteneurs créés en utilisant le volume, doivent être arrêté et supprimé avant : | ||
| + | docker stop MyContainer | ||
| + | docker rm MyContainer | ||
| + | docker volume rm MyVolume | ||
| + | |||
| + | ===== Type Bind ===== | ||
| + | |||
| + | On peut aussi démarrer un conteneur en montant un dossier du système hôte dans un répertoire du conteneur. | ||
| + | Par exemple, ci-dessous on monte le dossier ''/mnt'' de l'hôte dans le dossier ''/home'' du conteneur. | ||
| + | |||
| + | docker run -d --name MyC2 --mount type=bind,source=/mnt,destination=/home httpd | ||
| + | |||
| + | Pour inspecté le montage du conteneur : | ||
| + | docker inspect -f '{{ .Mounts }}' MyC2 | ||
| + | |||
| + | ===== Type TmpFs ===== | ||
| + | |||
| + | Pour démarrer une instance avec le dossier ''/home'' du conteneur en mémoire RAM de l'hôte : | ||
| + | |||
| + | docker run -d --name MyC3 --mount type=tmpfs,destination=/home httpd | ||