web-dev-qa-db-fra.com

Docker - impossible de monter un volume sur un fichier existant, le fichier existe

J'essaie de créer un conteneur de données pour mon application dans Docker. J'exécute cette commande pour exposer certains volumes:

docker run --name svenv.nl-data -v /etc/environment -v /etc/ssl/certs -v /var/lib/mysql -d svenv/svenv.nl-data

Le problème est que je reçois cette erreur de cette commande:

Error response from daemon: cannot mount volume over existing file, file exists /var/lib/docker/aufs/mnt/aefa66cf55357e2e1e4f84c2d4d2d03fa2375c8900fe3c0e1e6bc02f13e54d05/etc/environment

Si je comprends bien la documentation de Docker. La création de volumes pour des fichiers uniques est prise en charge. Donc, je ne comprends pas pourquoi je reçois cette erreur.

Y a-t-il quelqu'un qui peut m'expliquer cela? J'exécute Docker 1.9.1 sur Ubuntu 14.04.

9
Sven van de Scheur

Tu devrais utiliser:

-v /etc/environment:/etc/environment

au lieu de:

-v /etc/environment

L'ancien mappe le volume du conteneur sur le volume de l'hôte. Ce dernier tente de créer un nouveau volume à /etc/environment et échoue car ce répertoire existe déjà.

5
dr.scre

Supposons que vous êtes sous Linux, lancez le code suivant

docker run -it --rm -v /local_dir:/image_root_dir/mount_dir image_name

Voici quelques détails: 

-it: interactive terminal 
--rm: remove container after exit the container
-v: volume or say mount your local directory to a volume

Puisque la fonction de montage couvrira le répertoire dans votre image, vous devez toujours créer un nouveau répertoire dans le répertoire racine de vos images.

Consultez la documentation officielle Utilisez des supports de reliure pour obtenir plus d'informations.

0
hikaru89

Je suppose que parce que vous ne montez pas un fichier mais déclarez un montage Essayez cette notation à la place: -v <full path to a file you want to overwrite the target with>:/etc/environment 

0
Mykola Gurov