Docker : copier des fichiers

Anne docker

Copier un fichier

Depuis l’hôte

Pour copier juste un fichier du container docker vers la machine hôte :

$ docker cp mon_container:/chemin/du/fichier/dans/le/container/fichier.txt /chemin/du/répertoire/sur/la/machine/hote

La même commande fonctionne aussi dans l’autre sens :

$ docker cp fichier.txt mon_container:/chemin/du/fichier/dans/le/container/fichier.txt

Il faut noter que ça fonctionne aussi pour des répertoires.

Depuis le container

On a parfois besoin de rentrer dans le container pour explorer des résultats, et on ne sait pas à l’avance ce qu’on va vouloir récupérer. On peut alors faire un point de montage à condition que le container contienne un VOLUME (ce qui est probablement le cas s’il contient des données). Il faut procéder de la façon suivante :

$ mkdir save
$ docker run --rm -it --volumes-from mon_container -v $(pwd)/save:/mnt/host ubuntu
# ...
# cp some_files /mnt/host/
# ...
# exit

On retrouve alors les fichiers copiés dans le répertoire save/.

Sauvegarde

Si le container contient un VOLUME, et qu’on souhaite le sauvegarder, on peut faire :

$ docker run --rm --volumes-from <mon container> -v $(pwd):/backup \
                 ubuntu tar zcvf /backup/backup.tar.gz <repertoire du volume dans le container>

C’est particulièrement utile pour ne pas perdre les données d’un container que l’on souhaite détruire (docker rm).

Pour injecter cette sauvegarde dans un autre container :

$ docker run --rm --volumes-from <un autre container> -v $(pwd):/backup \
                 ubuntu tar zxvf /backup/backup.tar.gz

Voir aussi :