基本上,我有一个正在运行的容器,我想在其上附加控制台。 我已使用docker run -p 8080:80 test
来启动我的容器。它似乎工作正常。
我的码头工人PS看起来像这样:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
81b27e2525f1 test "/bin/sh -c /start.sh" 13 minutes ago Up 13 minutes 8080/tcp, 0.0.0.0:8080->80/tcp vigilant_bassi
然后尝试连接我的控制台
user@user:~$ docker attach 81b27e2525f1
ls
^C
ls
^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[B^[[B^[[B^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^[[A^C^C^C^C^[[A^[[A^[[A^[[A^[[A
这不起作用,我无法分离.
然后我认为这是我尝试在新系统上打开的错误,但我遇到了完全相同的问题。现在我阻止了多个控制台。 我发现了这个问题,这不是同一个问题。
我做错了什么?
ps 我的码头工人版本是:Docker version 1.13.1, build 092cba3
尝试使用docker exec
,用于调试目的:
docker exec -it test bash
(假设您的测试映像已安装bash
或至少安装了sh
。如果基于阿尔卑斯山,则ash
)
docker attach
使用容器的 stdio/stderr,因此您需要确保脚本实际上正在刷新/打印某些内容。
您可以在不附加到容器的情况下查看容器的输出:
docker logs -f <container-id>
但是如果你真的需要附加到它,你必须用 -it 标志开始它:
docker run --detach -it -p 8080:80 test
要附加:
docker attach <container-id>
不要使用 Ctrl+C 进行分离,因为这将是退出程序的信号。使用 Ctrl+P 然后按 Ctrl+Q 进行分离。