docker exec和docker exec -it有什么区别?

时间:2018-10-24 13:36:24

标签: docker

我是Docker的新手。我试图使用Docker容器实现MySQL。

在Docker容器中执行mysql命令时,本教程将显示此命令docker exec -it mysql1 mysql -uroot -p

docker exec中提到的Docker文档意味着在容器中运行命令。
可选的i标记表示“即使未连接也保持STDIN打开”。
可选的t标记的意思是“分配伪tty”。

什么意思是“保持STDIN打开”,什么意思是“附加”?
什么是“分配伪tty”?

我对shell命令不熟悉。我不知道为什么要在此处添加“-它”。
如果我只键入docker exec mysql1 mysql -uroot -p,会有所不同吗?

如此困惑,期待任何帮助...谢谢...

2 个答案:

答案 0 :(得分:4)

-i-不要只在后台运行程序而无法发送数据;保持开放状态以接受某种形式的输入。

-t-具体来说,请给我一个键入命令以发送到程序的位置,就像我对可以向其提供命令的远程计算机打开ssh或telnet会话一样。

他们基本上做到了,因此您可以运行例如您的mysql1程序,就好像您只是在Docker容器之外在本地正常运行一样。

答案 1 :(得分:1)

Will Cain的答案较为完整,但简而言之,给定-it可让您以 interactive 模式进入容器,即-
-t:分配一个伪tty
-i:即使未连接STDIN,也要保持打开

Docs for docker run解释了这些争论。

注意docer exec用于在已运行的容器内运行命令。因此,它对于调试着色器非常有用。