what is docker run -it flag?
I was doing some complex stuff with docker, but as turn out I don't know what -it
flag means.
Recently I've come across on some example of docker run
command which has confused me a little.
docker run -itd ubuntu:xenial /bin/bash
My question is what is sense to write -it
flag here, if container during instantiation run bin/bash
In documentation we have an example
docker run --name test -it debian
with explanation
The -it instructs Docker to allocate a pseudo-TTY connected to the container’s stdin; creating an interactive bash shell in the container.
and explanation for -t flag from help page
-t, --tty Allocate a pseudo-TTY
if I delete -it flag during
docker run -d ubuntu:xenial /bin/bash
my newly created container doesn't live so much
in docker ps -a
it is designated as exited
Sorry, if my question quite stupid, I can't find explanation on the Internet (I have significant misunderstanding of that point).
-it
is short for --interactive
+ --tty
. When you docker run
with this command it takes you straight inside the container.
-d
is short for --detach
, which means you just run the container and then detach from it. Essentially, you run container in the background.
Edit: So if you run the Docker container with -itd
, it runs both the -it
options and detaches you from the container. As a result, your container will still be running in the background even without any default app to run.
docker run -it ubuntu:xenial /bin/bash
starts the container in the interactive mode (hence -it
flag) that allows you to interact with /bin/bash
of the container. That means now you will have bash
session inside the container, so you can ls
, mkdir
, or do any bash command inside the container.
The key here is the word "interactive". If you omit the flag, the container still executes /bin/bash
but exits immediately. With the flag, the container executes /bin/bash
then patiently waits for your input.