`docker run -d`和`docker run -dit`有什么区别?

时间:2019-07-22 04:43:41

标签: docker docker-run

如果我想将其用作Node.js的开发环境,可以只使用docker run -d吗?

我真的需要下面的东西吗?

--interactive , -i      Keep STDIN open even if not attached
--tty , -t              Allocate a pseudo-TTY

1 个答案:

答案 0 :(得分:0)

在正常情况下,只有一个区别

-dit在后​​台运行容器 -it在前台运行容器,并将分配一个伪终端。

但是,如果入口点是bash怎么办?就像ubuntu-dockerfile一样。因为他们相信用户会根据需要或依赖的Dockerfile覆盖CMD。

# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]

因此,在这种情况下,当您仅指定-d时,容器将在启动后立即停止。因此,您需要通过添加pseudo-terminal来分配-dit

enter image description here

如您所见,该容器未运行,请让检入已停止的容器。

enter image description here

这样我们可以在几分钟前退出该容器。让我们尝试-dit enter image description here

我们可以看到该容器正在运行。如果您使用-d进行高山运动,则高山运动也会停止。

docker run -d alpine

此操作将在启动后立即退出,因此-dit将按照文档中的说明分配伪TTY。