docker-compose 中的伪 tty 分配

Spi*_*ros 10 tty docker docker-compose

在 docker 中,我可以简单地使用-t开关来docker run分配伪 tty(在这些示例中,我使用它nohup与真实 tty 分离):

$ nohup docker run    debian tty   # Produces "not a tty"
$ nohub docker run -t debian tty   # Produces "/dev/pts/0"
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 docker-compose 达到相同的结果。我有以下内容docker-compose.yml

version: "3"
services:
  myservice:
    image: debian
    tty: true
Run Code Online (Sandbox Code Playgroud)

我运行它有和没有nohup

$       docker-compose run myservice tty   # Produces "/dev/pts/0"
$ nohup docker-compose run myservice tty   # Produces "not a tty"
Run Code Online (Sandbox Code Playgroud)

的文档docker-compose run说我可以用来-T禁用 tty的分配,但似乎没有一种方法可以显式地启用它(这不是必需的,因为默认情况下应该分配一个tty)。

-T禁用伪 tty 分配。默认情况下docker-compose run分配 TTY。

难道我做错了什么?

zr0*_*ty7 22

docker-compose.yml在您的服务中包括以下内容:

services:
  myservice:
    ...
    stdin_open: true # docker run -i
    tty: true        # docker run -t
Run Code Online (Sandbox Code Playgroud)