`docker 运行 -d` 和 `docker 运行 -dit` 有什么区别?
What's the difference between `docker run -d` and `docker run -dit`?
如果我想将其用作 Node.js 的开发环境,是否可以仅 docker run -d
?
我真的需要以下内容吗?
--interactive , -i Keep STDIN open even if not attached
--tty , -t Allocate a pseudo-TTY
在正常情况下,只有一个区别
-dit
运行后台容器
-it
运行 容器在前台,会分配一个pseudo-terminal.
但是如果入口点是bash呢?就像 ubuntu-dockerfile 的情况一样。因为他们相信用户会根据他们的需要或依赖的 Dockerfile 覆盖 CMD。
# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
所以在这种情况下,当您只指定 -d
时,您的容器将在启动后立即停止。所以你需要通过添加 -dit
.
来分配 pseudo-terminal
如您所见,容器未 运行ning,让 check-in 停止容器。
所以我们可以在几分钟前退出该容器。让我们试试 -dit
我们可以看到容器是运行ning。如果您 运行 alpine 与 -d
高山情况相同,它也会停止。
docker run -d alpine
这将在启动后立即退出,因此 -dit
将分配一个 pseudo-TTY,如文档中所述。
如果我想将其用作 Node.js 的开发环境,是否可以仅 docker run -d
?
我真的需要以下内容吗?
--interactive , -i Keep STDIN open even if not attached
--tty , -t Allocate a pseudo-TTY
在正常情况下,只有一个区别
-dit
运行后台容器
-it
运行 容器在前台,会分配一个pseudo-terminal.
但是如果入口点是bash呢?就像 ubuntu-dockerfile 的情况一样。因为他们相信用户会根据他们的需要或依赖的 Dockerfile 覆盖 CMD。
# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
所以在这种情况下,当您只指定 -d
时,您的容器将在启动后立即停止。所以你需要通过添加 -dit
.
pseudo-terminal
如您所见,容器未 运行ning,让 check-in 停止容器。
所以我们可以在几分钟前退出该容器。让我们试试 -dit
我们可以看到容器是运行ning。如果您 运行 alpine 与 -d
高山情况相同,它也会停止。
docker run -d alpine
这将在启动后立即退出,因此 -dit
将分配一个 pseudo-TTY,如文档中所述。