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 |