web-dev-qa-db-fra.com

Comment écrire des données sur le système de fichiers hôte à partir du conteneur Docker

J'ai un conteneur Docker qui exécute du code et crée des rapports HTML. Je souhaite que ces rapports soient publiés dans un répertoire spécifique de la machine hôte, c'est-à-dire à l'adresse /usr/share/nginx/reports

Pour ce faire, j'ai monté ce répertoire d'hôte en tant que volume de données, c'est-à-dire docker run -v /usr/share/nginx/reports --name my-container com.containers/my-container

Cependant, lorsque je ssh sur la machine hôte et que je vérifie le contenu du répertoire /usr/share/nginx/reports, Je ne vois aucune des données du rapport là-bas.

Est-ce que je fais quelque chose de mal?

La machine hôte est un serveur Ubuntu et le conteneur Docker est également Ubuntu. Aucune bizarrerie boot2docker ne se passe ici.

35
jcm

Depuis " Gestion des données dans les conteneurs ", le montage d'un dossier hôte sur un conteneur serait:

docker run -v /Users/<path>:/<container path>

(voir " tiliser le volume ")

Utilisant seulement -v /usr/share/nginx/reports déclarerait le chemin du conteneur interne /usr/share/nginx/reports en tant que volume, mais n’aurait rien à voir avec le dossier Host.

C'est l'un des types de supports disponibles:

https://docs.docker.com/storage/images/types-of-mounts.png

29
VonC

J'utilise la boîte à outils Docker sur Windows. Je travaille sur une application de démarrage de printemps à l'aide de Docker. Mon application écrit les journaux dans

users/path/service.log 

Ainsi, lorsque j'ai lancé mon application à partir du terminal hôte, le fichier journal a été mis à jour avec succès. Mais la même chose quand je l'ai fait sur docker, aucun fichier n'a été créé ni mis à jour.

Donc, je modifié mon fichier journal emplacement pour correspondre aux répertoires du conteneur

var/log/service.log

J'ai redémarré mon conteneur et mon fichier a été mis à jour à nouveau.

Vous pouvez choisir n’importe quel emplacement, à condition qu’il corresponde au répertoire du conteneur. Il suffit de descendre dans le conteneur et de voir ce qui vous convient.

La prochaine étape consiste à copier les fichiers journaux du conteneur vers l'hôte.

Donc, afin de copier ces journaux sur votre hôte. Vous pouvez utiliser l'une des deux manières que je connais-

1- utiliser Volumes dans le menu fixe

2- utilisez la commande suivante de Docker pour copier le fichier du conteneur de docker vers l'hôte:

docker cp <containerId>:/file/path/within/container /Host/path/target
3
Dpk Goyal