我一直在网上到处准备,但答案没有得到彻底解释。我希望这里的这个问题如果得到回答,可以提供对此事的更新和彻底的解释。
为什么有人会使用以下参数定义容器:
stdin: true
tty: true
Run Code Online (Sandbox Code Playgroud)
还有如果
`docker run -it`
Run Code Online (Sandbox Code Playgroud)
将执行的容器进程绑定到调用客户端 stdin 和 tty,在容器上设置这些标志会将其执行的进程绑定到什么?
我只能设想一种情况,即,如果命令是 bash,那么您可以稍后在容器运行后附加到它(即那个 bash 运行实例)。
但同样可以docker run it
在必要时运行。我的意思是启动一个新的 bash 并做任何需要做的事情。无需附加到正在运行的
所以问题的第一部分是:
a) 引擎盖下发生了什么?
b) 为什么以及何时使用它,它有什么区别,附加值是什么?
Vas*_*pov 11
AFAIK,容器规范中的设置stdin: true
只会保持容器进程标准输入打开,等待有人使用kubectl attach
.
至于tty: true
- 这只是告诉 Kubernetes stdin 也应该是一个终端。一些应用程序可能会基于 stdin 是终端这一事实来改变其行为,例如添加一些交互性、命令完成、彩色输出等。但在大多数情况下,您通常不需要它。
顺便说一句kubectl exec -it POD bash
,还包含标志,-it
但在这种情况下,这确实需要,因为您在容器的名称空间中生成 shell 进程,该进程需要来自用户的标准输入和终端。
归档时间: |
|
查看次数: |
415 次 |
最近记录: |