0

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

我真的需要下面的吗?

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

1 回答 1

1

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

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

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

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

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

在此处输入图像描述

可以看到容器没有运行,让 check-in 停止容器。

在此处输入图像描述

所以我们可以在几分钟前退出该容器。让我们试试 -dit 在此处输入图像描述

我们可以看到容器正在运行。如果你用它运行 alpine,与 alpine 相同的情况-d也会停止。

docker run -d alpine

这将在启动后立即退出,因此-dit将分配一个伪 TTY,如文档中所述。

于 2019-07-22T07:27:21.197 回答