问题描述
如果我使用
docker run myimage /bin/bash -c "pwd"
或
docker run -it myimage /bin/bash -c "pwd"
结果是一样的。那么,“-it”是什么意思呢?我了解到“-i”用于交互式,“-t”用于 tty。但这些对我来说都是抽象名词。你能澄清一下什么时候应该在“docker run”命令中使用“-it”吗?
解决方法
当您想与容器交互时,您可以使用 -it
标志。
例如:
$ docker run -it myimage /bin/bash
这会给你一个容器内的外壳,让你保持与 bash 的连接
/ #
这将运行任何命令,但关闭连接并将您放入主机的外壳
$ docker run myimage /bin/bash -c "pwd"
/
test@host $
因此您将使用 -it
在容器内连接并执行更多命令。
最后退出容器
/ # exit
exited
,
提到 docs,
对于交互式进程(如 shell),您必须一起使用 -i -t 以便为容器进程分配一个 tty。
本质上,它的作用是添加一个终端驱动程序,它允许您作为终端会话与容器进行交互。
运行您的容器后,您可以运行 docker ps
来获取您的容器的哈希 ID,然后您可以通过运行:
docker exec -it containeridhash sh