如何对同一个docker容器进行多个独立的附件?

如何对同一个docker容器进行多个独立的附件?

也许是一个微不足道的问题,但这是我的问题:

我附加到一个正在运行的 docker 容器,在使用一段时间后,我需要“同时”运行单元测试和 gdb。

因此,我打开了另一个 shell 选项卡(konsole 选项卡)并再次附加到同一个 docker 容器$ docker attach container_name,但我所做的一切都在两个附件中得到了回响。如果我执行cd /home/user/folder_foo其他选项卡将“执行相同的操作”,最终两个 konsole 选项卡都位于同一文件夹中。就像相同的命令回显到两个选项卡一样。也许这是一个独特的用户结构,而我什至不可能。

我真的需要在同一个 docker 容器中并行做两件事,怎么办?

$ docker --version
Docker version 20.10.9, build c2ea9bc

我使用的是Ubuntu 21.04

答案1

连接到容器将当前输入和输出流(因此当以交互方式运行时,您的终端)附加到容器中正在运行的入口点命令。因此,从不同终端多次附加将显示同一命令的相同输出,并且来自任一终端的输入都会影响两个附件。

要同时在同一个容器中运行不同的命令,您实际上需要运行不同的命令。保留您拥有的第一个附件,对于第二个命令,运行

docker exec -it container_name /bin/bash

(假设您有/bin/bash容器镜像)。

这将为您提供同一运行容器内的两个独立的 shell。

相关内容