docker 附加:为什么我不能从我的 Docker 容器中分离?
docker attach: Why can't I detach from my Docker container?
出于某种原因,我无法在 运行 docker attach <container>
之后与 Docker 个容器分离。文档说要使用 Ctrl-p, Ctrl-q
,但这似乎不起作用。我也试过 ctrl-q + ctrl-p
(组合,而不是按顺序)和 ctrl-shift-q, ctrl-shift-p
和 ctrl-shift-q + ctrl-shift-p
。即使设置分离键,例如 --detach-keys="p"
也不会从容器中分离出来。
此外,其他事情似乎不起作用。例如,根据文档,ctrl-c
应该会导致附加的容器停止并分离。但是,我无法让 ctrl-c
在我的任何容器上工作。然而,与 ctrl-q
不同的是,ctrl-c
按预期呈现反馈,在终端中显示 ^C
。
我注意到,出于某种原因,当我按 ctrl-p
时,我在终端中得到一个 ^P
,但是按 ctrl-q
或 ctrl-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 终端中仍然存在。
您可以使用 --sig-proxy=false
来防止信号被传递到容器并使用 Ctrl+C
分离:
docker attach --sig-proxy=false container-test
这似乎是一个已知问题:
https://github.com/docker/for-mac/issues/1598
我发现通过将以下行添加到我的 docker-compose
,我可以让它退出并响应输入。
services:
test:
// etc...
stdin_open: true
tty: true
// etc...
出于某种原因,我无法在 运行 docker attach <container>
之后与 Docker 个容器分离。文档说要使用 Ctrl-p, Ctrl-q
,但这似乎不起作用。我也试过 ctrl-q + ctrl-p
(组合,而不是按顺序)和 ctrl-shift-q, ctrl-shift-p
和 ctrl-shift-q + ctrl-shift-p
。即使设置分离键,例如 --detach-keys="p"
也不会从容器中分离出来。
此外,其他事情似乎不起作用。例如,根据文档,ctrl-c
应该会导致附加的容器停止并分离。但是,我无法让 ctrl-c
在我的任何容器上工作。然而,与 ctrl-q
不同的是,ctrl-c
按预期呈现反馈,在终端中显示 ^C
。
我注意到,出于某种原因,当我按 ctrl-p
时,我在终端中得到一个 ^P
,但是按 ctrl-q
或 ctrl-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 终端中仍然存在。
您可以使用 --sig-proxy=false
来防止信号被传递到容器并使用 Ctrl+C
分离:
docker attach --sig-proxy=false container-test
这似乎是一个已知问题: https://github.com/docker/for-mac/issues/1598
我发现通过将以下行添加到我的 docker-compose
,我可以让它退出并响应输入。
services:
test:
// etc...
stdin_open: true
tty: true
// etc...