Docker 容器后台运行和前台运行的区别

后台运行vs前台运行

当你启动一个docker 容器的时候,第一件事就是要确认你要在前台运行还是在后台运行:

-d=false:Detached mode:Run container in the background,printnew container id

后台运行 (-d)

后台运行直接指定 (-d=true or just -d),这样的话所有的操作类似网络连接,共享操作等等都不会再接受命令行的命令控制。你就要使用attach命令 来进入一个容器,再管理它,注意当你attach链接到一个容器的时候,你就不能再使用 rm 来删除这个容器。

前台运行

当你不指定-d时,就是在前台运行, docker run 可以启动一个进程,并且通过console 连接进程的标准输入 输出和标准错误。它甚至可以伪装成一个TTY,发送信号量。所有这一切都是可以配置的。

-a=[]:Attach to `STDIN`,`STDOUT`and/or`STDERR`-t=false:Allocate a pseudo-tty

--sig-proxy=true:Proxify all received signal to the process (even in non-tty mode)-i=false:Keep STDIN open even ifnot attached

如果你不想使用 -a 来连接容器的所有输入输出,那么你可以指定你希望接受的流STDINSTDOUTSTDERR):

$ docker run -a stdin -a stdout -i -t ubuntu /bin/bash

在交互式的情况下,你最希望得到一个类似TTY那样的shell,你可以 指定 -i -t