我运行了以下命令:

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/

10-12 22:53