我运行了以下命令:
docker run -d -ti foo
它有效,但是我意识到我可能忘记了-ti
部分的远程操作。我假设如果使用
-d
,docker将忽略这些标志,有人知道吗?看来-ti和-d会互相矛盾?
最佳答案
它仍然设置输入文件句柄,并为容器分配一个伪tty。如果容器内的应用程序尝试从stdin读取,它将挂起等待输入,而不是立即退出或失败。稍后,您可以附加到该过程。例如。
$ docker run -dit --name test-dit busybox sh
f0e057ce47e03eb227aacb42e3a358b14fa5d8b26ad490fcec7cbfe0cd3cce73
$ docker run -d --name test-d busybox sh
4f2583d3380953f328b702c88884fbe55f16c44bce13dbccc00c4bb81f3270f2
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f2583d33809 busybox "sh" 5 seconds ago Exited (0) 4 seconds ago test-d
f0e057ce47e0 busybox "sh" 14 seconds ago Up 13 seconds test-dit
$ docker container attach test-dit
/ #
/ # ls
bin dev etc home proc root sys tmp usr var
/ # exit
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f2583d33809 busybox "sh" 22 seconds ago Exited (0) 21 seconds ago test-d
f0e057ce47e0 busybox "sh" 31 seconds ago Exited (0) 2 seconds ago test-dit
在第一个容器ls命令中,您可以看到没有立即退出-it
选项的 shell ,而带有-it
的 shell 可用于连接和运行命令。关于docker - 如果使用-d,docker是否会忽略-ti标志?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62785753/