在我的开发中,我发现自己经常发出一个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,并且不能覆盖它。
答案 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指令指定的默认命令。