以分离(后台)模式启动简单的Docker容器
docker run -d --name test ubuntu tail -f /dev/null
这是我的简单golang代码,我连接到正在运行的容器。 在目前的连接中,我希望得到功能性的。
package main
import (
"fmt"
"os/exec"
"bufio"
"io"
"os"
"github.com/kr/pty"
)
func main() {
cmd := exec.Command("docker", "exec", "-it", "test", "bin/bash")
tty, err := pty.Start(cmd)
if err != nil {
fmt.Println("Error start cmd", err)
}
defer tty.Close()
go func() {
scanner := bufio.NewScanner(tty)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
}()
go func() {
io.Copy(tty, os.Stdin)
}()
err = cmd.Wait()
if err != nil {
fmt.Println("Error Waiting", err)
}
}
更多它的工作原理,但有一些想法不起作用,因为我会从我的终端运行docker命令。
root@ba351b44ca80:/#
仅在点击返回后出现,但我的光标在新行,没有提示; 同样向上箭头以获取上一个命令不起作用 只打印出来
root@ba351b44ca80:/#
^[[A^[[A^[[A
但是在场景前面的命令后面被选中,并且通过点击返回它被执行。
执行游标命令后不显示提示,如
root@ba351b44ca80:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
<Here my cursor>