docker run 命令的 -i -t -d参数的作用
官方文档的说明,下面通过实例来验证这些选项的作用,印象更深
选项 | 选项简写 | 说明 |
---|---|---|
–detach | -d | 在后台运行容器,并且打印容器id。 |
–interactive | -i | 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。 |
–tty | -t | 分配一个伪tty,一般与 -i 连用。 |
建立相关的测试容器
#1.只有-d
[root@iZwz908j8pbqd86doyrez5Z test]# docker run -d -p 8081:8080 tomcat:9.0
#2.只有-it
[root@iZwz908j8pbqd86doyrez5Z test]# docker run -it -p 8082:8080 tomcat:9.0
#输出了tomcat启动相关的指令台指令,但无法交互(这里用ctrl+c退出)
#3.有-it...bash
[root@iZwz908j8pbqd86doyrez5Z test]# docker run -it -p 8083:8080 tomcat:9.0 /bin/bash
#直接进入了指令台(这里用ctrl+p+q退出)
#4.有-it也有-d
[root@iZwz908j8pbqd86doyrez5Z test]# docker run -d -it -p 8084:8080 tomcat:9.0 /bin/bash
查看状态
[root@iZwz908j8pbqd86doyrez5Z test]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
be6f31b74cc9 tomcat:9.0 "/bin/bash" 4 minutes ago Up 4 minutes 0.0.0.0:8084->8080/tcp wonderful_sammet
03472df49c1f tomcat:9.0 "/bin/bash" 5 minutes ago Up 5 minutes 0.0.0.0:8083->8080/tcp naughty_rhodes
74b8957aec16 tomcat:9.0 "catalina.sh run" 5 minutes ago Up 5 minutes 0.0.0.0:8081->8080/tcp trusting_lichterman
可以看到第2个测试(8082端口)已经停止了,因为没有用-d开启后台,指令台退出了,程序也就关了;第三种方式虽然没有用-d,但我在退出时是用ctrl+p+q,而不是exit直接退出,随意进程也还没有停止
使用attach命令(进入已经存在的一个终端)
[root@iZwz908j8pbqd86doyrez5Z ~]# docker attach 74b8957aec16
#进入空白,因为本身就没有打开过终端命令行
[root@iZwz908j8pbqd86doyrez5Z ~]# docker attach 03472df49c1f
#成功进入命令行
[root@iZwz908j8pbqd86doyrez5Z ~]# docker attach be6f31b74cc9
#成功进入命令行