【发布时间】:2020-05-18 00:04:20
【问题描述】:
我想编写一个程序,允许用户选择一个正在运行的 docker 容器,他们可以得到一个交互式 shell。我想要的程序流程大致如下:
- 用户从 bash 运行程序 -
./my_program - 给用户一个
他们可以使用交互式 cli 来选择要使用的 docker 容器
exec进入 - 当用户选择容器时,
docker exec -it <CONTAINER_ID> bash之类的东西从my_program运行,my_program退出,用户被转移到 docker 容器的 shell 会话中,就好像他们手动运行了docker exec -it <CONTAINER_ID> bash
我正在使用以下代码从 golang 尝试此操作:
rv, err := exec.Command("docker", "exec", "-it", containerId, "bash").Output()
log.Infof("RV: %v", rv)
if err != nil {
log.Errorf("Error exec-ing into container: %s", err)
}
并查看以下输出:
RV: []
Error exec-ing into container: exit status 1
我也在尝试使用 err := exec.Command("docker", "exec", "-it", containerId, "bash").Run() 并看到同样的错误。
我该如何创建这样的程序或调试当前正在发生的事情?
【问题讨论】:
-
你需要将你的 go exe 的 stdout/stderr 绑定到 exec.Command,这样你才能有适当的控制台控制。