为什么“docker附加”不工作,并阻止我在Ubuntu的konsole

基本上,我有一个正在运行的容器,我想附上控制台。 我已经使用docker run -p 8080:80 test来启动我的容器。 这似乎是工作find。

我的dockerps看起来像这样:

 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版本是: Docker version 1.13.1, build 092cba3

为了debugging目的,请尝试使用docker exec

 docker exec -it test bash 

(假设你的testing映像安装了bash ,或者至less有一个sh ,如果基于Alpine, 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来分离。