2017-07-03 4 views
5

J'essaye de créer un conteneur pour exécuter un programme. J'utilise une image pré configurée et maintenant j'ai besoin d'exécuter le programme. Cependant, c'est un programme d'apprentissage automatique et j'ai besoin d'un ensemble de données de mon ordinateur pour fonctionner.Comment puis-je utiliser un fichier local sur un conteneur?

Le fichier est trop volumineux pour être copié dans le conteneur. Il serait préférable que le programme exécuté dans le conteneur recherche l'ensemble de données dans un répertoire local de mon ordinateur, mais je ne sais pas comment je peux le faire.

Y at-il un moyen de faire cette référence avec une commande docker? Ou en utilisant Dockerfile?

Répondre

7

Oui, vous pouvez le faire. Ce que vous décrivez est un montage de volume hôte. Voir https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume pour la documentation sur le sujet.

Par exemple, si je veux monter un dossier de mon répertoire en /mnt/mydata dans un récipient, je peux le faire:

docker run -v /Users/andy/mydata:/mnt/mydata myimage 

Maintenant, /mnt/mydata l'intérieur du conteneur auront accès à /Users/andy/mydata sur mon hôte.

Gardez à l'esprit, si vous utilisez Docker pour Mac ou Docker pour Windows il y a des répertoires spécifiques sur l'hôte qui sont autorisés par défaut:

Si vous utilisez la machine Docker sur Mac ou Windows, votre Le démon de Docker Engine n'a qu'un accès limité à votre système de fichiers macOS ou Windows. Docker Machine essaie de partager automatiquement votre répertoire/Users (macOS) ou C: \ Users (Windows). Ainsi, vous pouvez monter des fichiers ou des répertoires sur macOS en utilisant.

+0

Merci Andy. Mais quand je fais cette commande, les fichiers du dossier/mnt/mydata seront-ils accessibles normalement? Puis-je faire des choses comme cd/mnt/mydata/test? J'ai fait ce que vous avez dit, mais quand j'utilise une commande ls dans le répertoire mydata du conteneur, il n'y a pas de fichier. – gomesh

+0

Je pense que dans ce cas, vous devriez poser une nouvelle question avec votre commande 'docker run' et les résultats escomptés puisqu'elle est maintenant hors de la portée de cette question. C'est en effet comme ça que ça devrait fonctionner. Il semble que le dossier hôte soit incorrect ou que vous installiez quelque chose en dehors de '/ Users'. Assurez-vous d'inclure des versions de Docker et de quel Docker (Docker pour Windows, etc.) vous utilisez. –