Docker - cannot mount volume over existing file, file exists

和自甴很熟 提交于 2020-05-10 04:06:29

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!