I\'ve used docker run -it
to launch containers interactively and docker run -d
to start them in background. These two options seemed exclusive. However
Yes, sometimes, it's necessary to include -it
even you -d
When the ENTRYPOINT
is bash
or sh
docker run -d ubuntu:14.04
will immediately stop, cause bash
can't find any pseudo terminal to be allocated. You have to specify -it
so that bash
or sh
can be allocated to a pseudo terminal.
docker run -dit ubuntu:14.04
If you want to use nano
or vim
with any container in the future, you have to specify -it
when the image starts. Otherwise you'll get error. For example,
docker run --name mongodb -d mongo
docker exec -it mongodb bash
apt-get update
apt-get install nano
nano somefile
It will throw an error
Error opening terminal: unknown.