Are you trying to mount a directory onto a file (or vice-versa)?

Solution 1:

This should no longer happen (since v2.2.0.0), see here


If you are using Docker for Windows, this error can happen if you have recently changed your password.

How to fix:

  1. First make sure to delete the broken container's volume
    docker rm -v <container_name>
    Update: The steps below may work without needing to delete volumes first.
  2. Open Docker Settings
  3. Go to the "Shared Drives" tab
  4. Click on the "Reset Credentials..." link on the bottom of the window
  5. Re-Share the drives you want to use with Docker
  • You should be prompted to enter your username/password
  1. Click "Apply"
  2. Go to the "Reset" tab
  3. Click "Restart Docker"
  4. Re-create your containers/volumes

Credit goes to BaranOrnarli on GitHub for the solution.

Solution 2:

TL;DR: Remove the volumes associated with the container.

Find the container name using docker ps -a then remove that container using:

docker rm -v <container_name>

Problem:

The error you are facing might occur if you previously tried running the docker run command while the file was not present at the location where it should have been in the host directory.

In this case docker daemon would have created a directory inside the container in its place, which later fails to map to the proper file when the correct files are put in the host directory and the docker command is run again.

Solution:

Remove the volumes that are associated with the container. If you are not concerned about other container volumes, you can also use:

# WARNING, THIS WILL REMOVE ALL VOLUMES
docker volume rm $(docker volume ls -q)

Solution 3:

Because docker will recognize $PWD/conf/nginx.conf as a folder and not as a file. Check whether the $PWD/conf/ directory contains nginx.conf as a directory.

Test with

> cat $PWD/conf/nginx.conf 
cat: nginx.conf/: Is a directory

Otherwise, open a Docker issue.
It's working fine for me with same configuration.