I'm creating an application that uses Docker with Dockerode and I want to attach it to the container and sending input and get output back and forth and this is my current code but for some reason, I can't send input. I sent it but I get nothing back as output, I don't know if I am doing this correctly.
var containerID = message.d.id
var container = await docker.getContainer(containerID)
if (!activeContainers[containerID]) {
var container = await docker.getContainer(containerID)
var idk = new stream.PassThrough()
idk.resume()
idk.on('data', (data) => {
ws.send(JSON.stringify({
op: 10,
d: data.toString(),
machineID: message.d.machineID
}))
})
var s = await container.attach({ stream: true, stdin: true, stdout: true, stderr: true })
s.pipe(idk)
s.on('end', () => {
delete activeContainers[inspect.Id]
})
activeContainers[inspect.Id] = {
attach: s,
stdin: process.stdin
}
process.stdin.resume()
process.stdin.setEncoding('utf8')
process.stdin.setRawMode(true)
process.stdin.pipe(s)
await container.start()
activeContainers[containerID].stdin.write(message.d.exec + '
')
return
}
activeContainers[containerID].stdin.write(message.d.exec + '
')
question from:
https://stackoverflow.com/questions/65943780/why-cant-i-send-input-to-my-docker-stream-that-is-attached 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…