Home > Mobile >  What does it mean when Docker is simultaneously run in interactive and detatched modess
What does it mean when Docker is simultaneously run in interactive and detatched modess

Time:02-05

I'm new to Docker and came across this confusing (to me) command in one of the Docker online manuals (https://docs.docker.com/storage/bind-mounts/):

 $ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app,readonly \
  nginx:latest

What I found confusing was the use of both the -it flag and the -d flag. I thought -d means to run the container in the background, but -it means to allow the user to interact with the container via the current shell. What does it mean that both flags are present? What am I not understanding here?

CodePudding user response:

The -i and -t flags influence how stdin and stdout are connected, even in the presence of the -d flag. Furthermore, you can always attach to a container in the future using the docker attach command.

Consider: If I try to start an interactive shell without passing -i...

$ docker run -d --name demo alpine sh

...the container will exit immediately, because stdin is closed. If I want to run that detached, I need:

$ docker run -itd --name demo alpine sh

This allows me to attach to the container in the future and interact with the shell:

$ docker attach demo
/ #
  •  Tags:  
  • Related