如何为同一个Docker容器建立多个独立的连接?
解决Docker容器多会话并行操作的问题
这其实是docker attach的预期行为哦,它本质上是直接连接到容器主进程的标准输入/输出/错误流,所以多个attach会话会共享同一个终端上下文,你的操作自然会在所有连接窗口同步显示——这可不是什么容器用户结构的限制~
要实现在同一个容器里并行执行单元测试和gdb这类任务,最直接的方法是用docker exec命令,它能在运行中的容器里启动一个全新的独立shell会话,每个会话之间完全隔离,互不干扰。
具体操作步骤:
- 打开新的Shell标签页,执行以下命令启动一个新的交互式shell:
如果容器里没有安装docker exec -it container_name bashbash,可以换成更基础的sh:docker exec -it container_name sh - 这样你就能在新标签页的独立shell里运行gdb,原来的会话继续执行单元测试,两者的操作和输出完全不会互相影响。
额外小贴士:
如果之后你需要在容器内的同一个会话里同时运行多个任务,也可以在容器里安装tmux或者screen这类终端复用工具。不过对于你的当前需求,docker exec已经足够简单高效了。
你的Docker版本20.10.9完全支持docker exec命令,放心用就好~
内容的提问来源于stack exchange,提问作者Rodrigo Gurgel
相关产品推荐
相关产品推荐

