为何执行docker attach festive_bhabha无输出且无法返回?
Docker Attach 无输出且无法返回的原因与解决办法
你遇到的这个情况其实是Docker使用中挺常见的小问题,我来给你唠唠背后的原因和解决办法:
为什么会出现这种情况?
- 主进程没有交互式终端支持:你的
festive_bhabha容器是用ubuntu镜像启动的,启动命令是/bin/bash。如果启动容器时没加-it参数,这个bash进程会运行在非交互式、无TTY的模式下——它不会主动输出内容,也不会监听你的输入,所以你用attach连进去后,就会看起来像卡住了,既没输出也退不出来。 - Attach 绑定的是主进程的IO流:
docker attach本质是直接连接到容器PID 1进程的标准输入、输出和错误流。如果这个主进程(也就是这里的bash)没有产生任何输出,也没有在等待输入,自然就没东西显示;而且只要主进程没退出,你就没法直接从attach会话里返回。
怎么解决?
1. 脱离当前卡住的Attach会话
如果你现在已经卡在attach里了,别着急关闭终端,按这个组合键:Ctrl + P 然后按 Ctrl + Q。这个操作会让你安全脱离attach会话,回到宿主机终端,同时容器会继续保持运行状态。
2. 用更灵活的方式进入容器
比起attach,更推荐用docker exec命令直接在运行的容器里启动一个新的交互式bash会话,完全不受主进程状态的影响:
sudo docker exec -it festive_bhabha /bin/bash
执行这个命令后,你就能直接进入容器的交互式终端,正常输入命令操作了。
3. 重启容器时添加交互式参数
如果之后需要重启这个容器,记得加上-i参数来分配交互式终端,这样再用attach连接就正常了:
sudo docker start -i festive_bhabha
要是以后启动新的Ubuntu容器,直接用下面的命令,就能避免这个问题:
sudo docker run -it --name my_ubuntu ubuntu /bin/bash
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

