'docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545:

I have a problem when i execute the next docker instructions:

# make a directory
mkdir /server/nginx
cd /server/nginx

 # make a container
docker run --name nginx \
-d -p 8080:8080 \
-v /home/www:/home/www \
-v /home/www:/usr/share/nginx/html \
-v "$PWD"/nginx.conf:/etc/nginx/nginx.conf \
-v "$PWD"/logs:/var/log/nginx \
-v "$PWD"/conf.d:/etc/nginx/conf.d \
--link php \
-d nginx

I get the next error

docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/server/nginx/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type. 

Docker generated the next directories:

drwxr-xr-x 5 root root 4096 Jan 7 05:03 ./
drwxr-xr-x 8 root root 4096 Jan 7 04:49 ../
drwxr-xr-x 2 root root 4096 Jan 7 05:03 conf.d/
drwxr-xr-x 2 root root 4096 Jan 7 05:03 logs/
drwxr-xr-x 2 root root 4096 Jan 7 05:03 nginx.conf/

When need be files not directories.



Solution 1:[1]

drwxr-xr-x 2 root root 4096 Jan 7 05:03 nginx.conf/

The d above means nginx.conf is not a file, but a folder. You could try to cd nginx.conf to verify it.

As the error indicates, you should setup a nginx.conf file, not a nginx.conf folder.

Solution 2:[2]

Happened to me starting a container having previously mounted volume from one location, while I assigned it meanwhile other location. After removing and recreating containers from the start, binding/mounting a new volume path, it worked.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 atline
Solution 2 FantomX1