Starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown

43,281

There are two things happening here.

A Dockerfile that starts FROM scratch starts from a base image that has absolutely nothing at all in it. It is totally empty. There is not a set of base tools or libraries or anything else, beyond a couple of device files Docker pushes in for you.

The ENTRYPOINT echo ... command gets rewritten by Docker into ENTRYPOINT ["/bin/sh", "-c", "echo ..."], and causes the CMD to be totally ignored. Unless overridden with docker run --entrypoint, this becomes the main process the container runs.

Since it is a FROM scratch image and contains absolutely nothing at all, it doesn't contain a shell, hence the "/bin/sh: no such file or directory" error.

Share:
43,281
Mehraj Malik
Author by

Mehraj Malik

Updated on July 31, 2021

Comments

  • Mehraj Malik
    Mehraj Malik almost 3 years

    I want to understand how CMD and ENTRYPOINT works. So, I just created a very simple Dockerfile

    FROM scratch
    
    CMD echo "Hello First"
    
    ENTRYPOINT echo "Hello second" 
    

    Then I build image of this :

    docker build -t my_image .
    

    The logs are as below:

    Step 1/3 : FROM scratch ---> Step 2/3 : CMD echo "Hello First" ---> Using cache ---> 9f2b6a00982f Step 3/3 : ENTRYPOINT echo "Hello second" ---> Using cache ---> 1bbe520f9526 Successfully built 1bbe520f9526 Successfully tagged my_image:latest SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context w ill have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

    When I create a container of this image it returns:

    docker run my_image
    

    Error is:

    docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"/bin/sh\": stat /b in/sh: no such file or directory": unknown.

    Can someone please help me about error?