Как создать и подключиться к TTY в контейнере Docker извне контейнера? - PullRequest
0 голосов
/ 04 января 2019

Я хочу, чтобы ввод / вывод (tty) двоичного файла был отлажен в GDB (работает в Docker) в виде потока NodeJS.

GDB может разделить свой вывод и вывод двоичного файла с помощью команды tty <tty>. Я хочу взаимодействовать с этим TTY, но он находится в контейнере Docker. Есть ли в любом случае разоблачить TTY?

До сих пор я пытался chvt при выполнении из контейнера (через Dockerode) и чтении выходного потока, но это не работает.

Запуск GDB в контейнере с gdb -i=mi --tty=<some tty>

Я хочу прикрепить, например, с помощью Exec:

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

1 Ответ

0 голосов
/ 24 января 2019

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...