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, now I've noticed that docker run -dit
(or docker run -itd
) is quite common. So what is the difference? When -it
is really needed together with -d
?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Yes, sometimes, it's necessary to include -it
even you -d
When the
ENTRYPOINT
isbash
orsh
docker run -d ubuntu:14.04
will immediately stop, causebash
can't find any pseudo terminal to be allocated. You have to specify-it
so thatbash
orsh
can be allocated to a pseudo terminal.docker run -dit ubuntu:14.04
If you want to use
nano
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.