docker attach: 为什么我无法从Docker容器中分离?

9
由于某种原因,在运行docker attach <container>之后,我无法从Docker容器中分离出来。文档中建议使用Ctrl-p, Ctrl-q,但这似乎不起作用。我还尝试过ctrl-q + ctrl-p(组合,而不是按顺序),ctrl-shift-q, ctrl-shift-pctrl-shift-q + ctrl-shift-p。即使设置了一个分离键,例如--detach-keys="p",也无法从容器中分离出来。
此外,其他一些事情似乎也不起作用。例如,根据文档,ctrl-c应该导致附加的容器停止并分离。然而,我在任何一个容器上都无法让ctrl-c工作。然而,与ctrl-q不同,ctrl-c会按预期显示反馈,在终端中显示^C
我注意到由于某种原因,当我按下ctrl-p时,在终端中会显示^P,但按下ctrl-qctrl-shift-q却没有终端反馈。
有人可以猜测为什么会发生这种情况吗?
如果有关系的话,我在MacOS上使用iTerm2。另外,涉及的容器是使用docker-compose启动的。
编辑:为了清晰起见,我使用以下compose文件启动我的容器:docker-compose up
version: '3'

services:
  test:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: container-test
    ports:
      - "5050:5050"

然后我使用以下方式进行附加:
$ docker attach container-test

编辑2:经过一些测试,我可以确认这个问题在MacOS终端中仍然存在。

你是如何启动容器的?请提供完整的Docker命令。 - BMitch
Added as requested by @BMitch - Kirk Sefchik
1
我不确定 docker-compose 是否会配置具有交互输入的容器,tty 是一个单独的选项,您需要启用它。我认为您需要这两个才能使分离键组合起作用,但我需要进行更多测试。 - BMitch
2个回答

15

3
我发现通过在我的docker-compose中添加以下行,我可以让它退出并响应输入。
services:
  test:
    // etc...
    stdin_open: true
    tty: true
    // etc...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接