skip to Main Content

I am running a docker container using the docker run -it flags to compile some programs there.

Whenever a error, keyboard interrupt, segfault arises inside the environment, I get kicked out of the docker environment.

What’s the reason for that behaviour? Is it something related to my setup or is it the default? I would like to change that since it is not too uncommon to get some errors while trying to develop something.

3

Answers


  1. How to stay inside docker when error arises?

    Do not terminate your process when error arises.

    What’s the reason for that behaviour?

    The main process that is running inside the container has terminated.

    Is it something related to my setup or is it the default?

    Yes and yes. It’s not really "default", it’s how it works.

    I would like to change

    So wrap your compilation process in a different process, so that your main process do not exit. Typically, with shell:

    docker ... sh -c 'if ! your_compilation_command ; then echo Och nooo, compiling failed; echo Starting interactive shell; sh -li; fi'
    docker_run_then_if_failed_drop_to_shell() {
        docker ... sh -c 'if ! "$@"; then ...' _ "$@"
    }
    docker_run_then_if_failed_drop_to_shell your compilation command
    
    Login or Signup to reply.
  2. In docker, containers are ephemeral which mean is you can reach the container only on running state. Also remember that every container working as process on host system. If container is down, there will be no process which able to represent the container. If you would like to observe or fetch data for debug purpose, I can advice you to use volume then you can store debug files on shared disk space between container and host.

    BR,

    Login or Signup to reply.
  3. didn’t quite understand the scenario and what you are trying to develop through docker but may be you can try following:

    docker run <image:tag> -d
    

    and then do :

    docker exec -it <container_id> /bin/bash
    

    for retrieving container_id, user docker ps

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search