【问题标题】:docker attach: Why can't I detach from my Docker container?docker attach:为什么我不能从我的 Docker 容器中分离?
【发布时间】:2018-02-23 19:10:02
【问题描述】:

由于某种原因,在运行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 的要求添加
  • 我不确定docker-compose 是否会为容器配置交互式输入,而tty 是您需要启用的单独选项。我相信您需要这两者才能使分离键组合起作用,但我需要进行更多测试。

标签: macos docker docker-compose docker-for-mac


【解决方案1】:

您可以使用--sig-proxy=false 来防止信号被传递到容器并使用Ctrl+C 分离:

docker attach --sig-proxy=false container-test

这似乎是一个已知问题: https://github.com/docker/for-mac/issues/1598

【讨论】:

    【解决方案2】:

    我发现通过将以下几行添加到我的docker-compose,我可以让它退出并响应输入。

    services:
      test:
        // etc...
        stdin_open: true
        tty: true
        // etc...
    

    【讨论】:

      猜你喜欢
      • 2021-12-06
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多