Sven van de Scheur
Sven van de Scheur

Reputation: 1903

Docker - cannot mount volume over existing file, file exists

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.

Upvotes: 21

Views: 55119

Answers (5)

Dave
Dave

Reputation: 1251

For me the solution was to remove the image, and rebuild. Not a good solution, but it was what worked for me.

Upvotes: 0

EvgenyKolyakov
EvgenyKolyakov

Reputation: 3634

cannot mount volume over existing file might also mean that you're trying to mount a folder from the host to a file in the container which is a logical bug.

If so, wrap the file in the container in a folder and mount that folder instead of the file.

Upvotes: 1

dr.scre
dr.scre

Reputation: 2377

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.

Upvotes: 11

Fuevo
Fuevo

Reputation: 152

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.

Upvotes: 1

Mykola Gurov
Mykola Gurov

Reputation: 8695

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

Upvotes: 0

Related Questions