Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | Dernière révisionLes deux révisions suivantes | ||
technique:docker:admin:bindmount-to-volume [2020/10/13 19:17] – ↷ Page déplacée de technique:adminsys:docker:bindmount-to-volume à technique:docker:admin:bindmount-to-volume qduchemi | technique:docker:admin:bindmount-to-volume [2020/10/14 15:51] – qduchemi | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
# Passer d'un bind mount à un volume Docker | # Passer d'un bind mount à un volume Docker | ||
- | Il est préférable d' | + | ## Préambule |
- | En effet, | + | Pour stocker |
- | * Il ne sont pas gérés | + | < |
- | * Le comportement des bind mount n'est pas constant quand un dossier non-vide de l' | + | * Ils dépendent d'un chemin spécifique et ne sont pas dans la partition allouée |
- | * Docker Compose gère automatiquement le cycle de vie des volumes Docker. | + | |
- | * Il est facile de vérifier la liste de tous les volumes Docker. | + | |
- | * ... | + | |
+ | </ | ||
- | La procédure est assez simple. Pour cet exemple, on va supposer la situation suivante : | ||
- | * Un service monte le dossier `/data` (hôte) sur `/content` (conteneur). | + | Pour cette exemple, on va supposer la situation suivante : |
+ | |||
+ | * Un service monte le dossier `/old_data` (hôte) sur `/content` (conteneur). | ||
* On veut plutôt utiliser un volume Docker appelé `data`. | * On veut plutôt utiliser un volume Docker appelé `data`. | ||
- | Voici comment procéder : | + | ## Procédure |
- | 1. Arrêter le conteneur | + | ### Arrêter le conteneur |
- | 2. Créer le volume | + | |
+ | On ne peut pas migrer les données pendant que le conteneur tourne, car elles sont susceptibles d' | ||
+ | |||
+ | < | ||
+ | |||
+ | ### Création du volume | ||
``` | ``` | ||
docker volume create data | docker volume create data | ||
``` | ``` | ||
- | 3. Lancer | + | |
+ | ### Monter le volume | ||
+ | |||
+ | Il est plus facile de copier les données dans le volume si ce dernier est monté dans un conteneur. | ||
+ | On crée donc un conteneur | ||
``` | ``` | ||
docker run -v data:/dumb --name dumb busybox true | docker run -v data:/dumb --name dumb busybox true | ||
``` | ``` | ||
- | 4. Copier | + | |
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | ### Copier les données | ||
+ | |||
+ | La commande | ||
+ | On va donc copier les données | ||
``` | ``` | ||
- | docker cp -a /data/. dumb:/dumb | + | # Remplace /old_data par le dossier concerné |
+ | docker cp -a /old_data/. dumb:/dumb | ||
``` | ``` | ||
- | 5. Arrêter le conteneur | + | |
+ | < | ||
+ | |||
+ | ### Arrêter le conteneur | ||
``` | ``` | ||
docker stop dumb && docker rm dumb | docker stop dumb && docker rm dumb | ||
``` | ``` | ||
- | 6. Modifier le point de montage | + | |
+ | ### Modifier le point de montage | ||
+ | |||
+ | On remplacera tout simplement | ||
+ | |||
+ | Si on utilise Compose, il ne faut pas oublier de déclarer `data` comme volume, par exemple : | ||
```yaml | ```yaml | ||
Ligne 54: | Ligne 82: | ||
``` | ``` | ||
- | Suite à ces modifications, | + | ### Redémarrage du conteneur |
+ | |||
+ | Suite à ces modifications, | ||
+ | |||
+ | < |