Why docker container exits immediately

后端 未结 15 2190
温柔的废话
温柔的废话 2020-11-22 13:42

I run a container in the background using

 docker run -d --name hadoop h_Service

it exits quickly. But if I run in the foreground, it works

相关标签:
15条回答
  • 2020-11-22 14:17

    There are many possible ways to cause a docker to exit immediately. For me, it was the problem with my Dockerfile. There was a bug in that file. I had ENTRYPOINT ["dotnet", "M4Movie_Api.dll] instead of ENTRYPOINT ["dotnet", "M4Movie_Api.dll"]. As you can see I had missed one quotation(") at the end.

    To analyze the problem I started my container and quickly attached my container so that I could see what was the exact problem.

    C:\SVenu\M4Movie\Api\Api>docker start 4ea373efa21b
    
    
    C:\SVenu\M4Movie\Api\Api>docker attach 4ea373efa21b
    

    Where 4ea373efa21b is my container id. This drives me to the actual issue.

    After finding the issue, I had to build, restore, publish my container again.

    0 讨论(0)
  • 2020-11-22 14:19

    If you check Dockerfile from containers, for example fballiano/magento2-apache-php

    you'll see that at the end of his file he adds the following command: while true; do sleep 1; done

    Now, what I recommend, is that you do this

    docker container ls --all | grep 127
    

    Then, you will see if your docker image had an error, if it exits with 0, then it probably needs one of these commands that will sleep forever.

    0 讨论(0)
  • 2020-11-22 14:22

    Since the image is a linux, one thing to check is to make sure any shell scripts used in the container have unix line endings. If they have a ^M at the end then they are windows line endings. One way to fix them is with dos2unix on /usr/local/start-all.sh to convert them from windows to unix. Running the docker in interactive mode can help figure out other problems. You could have a file name typo or something. see https://en.wikipedia.org/wiki/Newline

    0 讨论(0)
  • 2020-11-22 14:24

    Add this to the end of Dockerfile:

    CMD tail -f /dev/null
    

    Sample Docker file:

    FROM ubuntu:16.04
    
    # other commands
    
    CMD tail -f /dev/null
    

    Reference

    0 讨论(0)
  • 2020-11-22 14:24

    My pracitce is in the Dockerfile start a shell which will not exit immediately CMD [ "sh", "-c", "service ssh start; bash"], then run docker run -dit image_name. This way the (ssh) service and container is up running.

    0 讨论(0)
  • 2020-11-22 14:27

    Why docker container exits immediately?

    If you want to force the image to hang around (in order to debug something or examine state of the file system) you can override the entry point to change it to a shell:

    docker run -it --entrypoint=/bin/bash myimagename
    
    0 讨论(0)
提交回复
热议问题