出于某种原因,我在运行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
启动的。
编辑:为清楚起见,我在docker-compose up
文件上使用compose
启动了我的容器:
version: '3'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: container-test
ports:
- "5050:5050"
然后我附上:
$ docker attach container-test
编辑2:经过一些测试,我可以确认MacOS终端中仍存在此问题。
答案 0 :(得分:4)
您可以使用--sig-proxy=false
来阻止信号传递到容器并使用Ctrl+C
分离:
docker attach --sig-proxy=false container-test
这似乎是一个已知问题: https://github.com/docker/for-mac/issues/1598
答案 1 :(得分:0)
我发现通过在我的docker-compose
中添加以下行,我可以让它退出并响应输入。
services:
test:
// etc...
stdin_open: true
tty: true
// etc...