pipe道docker工运行容器IDdocker执行
在我的开发中,我发现自己发出了一个docker run
命令,后面跟着一个docker exec
命令,这个命令对生成的容器ID非常频繁。 在命令之间复制/粘贴容器ID有点令人讨厌,所以我试图将容器ID传入我的docker exec
命令。
这是我的示例命令。
docker run -itd image | xargs -i docker exec -it {} bash
这启动容器,但是我得到以下错误。
the input device is not a TTY
有没有人有任何想法如何解决这个问题?
编辑:我也忘了提及我有一个ENTRYPOINT定义,不能重写。
做这个,而不是:
ID=$(docker run -itd image) && docker exec -it $ID bash
因为xargs
在不分配新的tty的情况下执行它的参数。
如果你只是想“打”到容器中,你不必传递容器id。 你可以简单地运行
docker run -it --rm <image> /bin/bash
例如,如果我们采取Ubuntu的基础形象
docker run -it --rm ubuntu /bin/bash root@f80f83eec0d4:/#
从文档
-t:分配一个伪tty
-i:即使未连接,也要保持STDIN打开
–rm:当容器退出时自动移除容器
命令/ bin / bash将覆盖 Dockerfile中用CMD指令指定的默认命令。