问题
I'm trying to build a data container for my application in Docker. I run this command to expose some volumes:
docker run --name svenv.nl-data -v /etc/environment -v /etc/ssl/certs -v /var/lib/mysql -d svenv/svenv.nl-data
The problem is that i get this error from this command:
Error response from daemon: cannot mount volume over existing file, file exists /var/lib/docker/aufs/mnt/aefa66cf55357e2e1e4f84c2d4d2d03fa2375c8900fe3c0e1e6bc02f13e54d05/etc/environment
If I understand the Docker documentation correctly. Creating volumes for single files is supported. So I don't understand why I get this error.
Is there somebody who can explain this to me? I'm running Docker 1.9.1 on Ubuntu 14.04.
回答1:
You should use:
-v /etc/environment:/etc/environment
instead of:
-v /etc/environment
The former maps container volume to the host volume.
The latter tries to create a new volume at /etc/environment
and fails since this directory already exists.
回答2:
I guess because you are not mounting a file but instead declaring a mount. Try this notation instead: -v <full path to a file you want to overwrite the target with>:/etc/environment
回答3:
Suppose you are under Linux, run the following code
docker run -it --rm -v /local_dir:/image_root_dir/mount_dir image_name
Here is some detail:
-it: interactive terminal
--rm: remove container after exit the container
-v: volume or say mount your local directory to a volume
Since the mount function will 'cover' the directory in your image, your should always make a new directory under your images root directory.
Visit official documentation Use bind mounts to get more information.
来源:https://stackoverflow.com/questions/33903621/docker-cannot-mount-volume-over-existing-file-file-exists