使用golang连接到具有功能tty的docker容器
发布时间:2020-12-16 09:23:07 所属栏目:大数据 来源:网络整理
导读:以分离(背景)模式启动简单的Docker容器 docker run -d --name test ubuntu tail -f /dev/null 这是我的简单golang代码,我连接到正在运行的容器. 在目前的连接中,我希望获得功能tty. package mainimport ( "fmt" "os/exec" "bufio" "io" "os" "github.com/kr/
以分离(背景)模式启动简单的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> 解决方法
go-dockerclient值得一试.它是Docker远程API的一个简单漂亮的抽象.它被许多开源项目使用,并且也定期维护.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |