管道码头将容器ID运行到docker exec

时间:2017-06-15 21:30:33

标签: bash docker pipe exec

在我的开发中,我发现自己经常发出一个docker run命令,然后对生成的容器ID发出docker exec命令。在命令之间复制/粘贴容器ID有点烦人,所以我试图将容器ID传递到我的docker exec命令中。

这是我的示例命令。

docker run -itd image | xargs -i docker exec -it {} bash

这会启动容器,但后来我收到以下错误。

the input device is not a TTY

有没有人知道怎么解决这个问题?

编辑:我也忘了提到我已经定义了ENTRYPOINT,并且不能覆盖它。

2 个答案:

答案 0 :(得分:3)

请改为:

ID=$(docker run -itd image)  && docker exec -it $ID bash

因为xargs在不分配新tty的情况下执行参数。

答案 1 :(得分:0)

如果您只想" bash" - 在容器中,您不必传递容器ID。你可以简单地运行

docker run -it --rm <image> /bin/bash

例如,如果我们采用ubuntu基本图像

docker run -it --rm ubuntu /bin/bash
root@f80f83eec0d4:/#
来自documentation

  

-t:分配伪tty
  -i:即使未连接,也要保持STDIN打开   --rm:退出时自动删除容器

命令/ bin / bash overwrites使用Dockerfile中的CMD指令指定的默认命令。