如何从容器外部创建并连接到 docker 容器中的 TTY?

How to create and connect to a TTY in a docker container from outside the container?

我想要在 GDB 中调试的二进制文件的 input/output (tty)(Docker 中的 运行)作为 NodeJS 流。

GDB 可以使用tty <tty> 命令将其输出与二进制文件的输出分开。我想与此 TTY 交互,但它位于 Docker 容器中。有没有办法公开 TTY?

到目前为止,我已经尝试 chvt 从容器执行(通过 Dockerode)并读取输出流,但它不起作用。

运行 容器中的 GDB gdb -i=mi --tty=<some tty>

我想使用例如执行:

let exec:Exec = await container.exec({ AttachStdin: true, AttachStdout: true, AttachStderr: true, Cmd: ['chvt', '69'], Tty: true }); let execProc = await exec.start({Tty: true}); let sock = execProc.output.connection; sock.pipe(<somewhere>); //tty of binary running in GDB can be interacted via pipe


let containerExecStream = async (container: Container,cmd: string[]) => {
    let exec = await container.exec({
        AttachStdin: true,
        AttachStdout: true,
        AttachStderr: true,
        Tty: true,
        Cmd:['bash', '-c', 'socat pty,raw,echo=0,link=/dev/gdbout,waitslave -']});
    let out = await exec.start({Tty: true});
    return <Socket>out.output.connection;
}