将Docker运行容器的ID传递给Docker exec

5
在我的开发中,我经常使用docker run命令启动容器,然后使用docker exec命令进入该容器。将容器ID复制粘贴到不同的命令之间有点烦人,因此我尝试将容器ID传递给我的docker exec命令。
以下是我的示例命令。 docker run -itd image | xargs -i docker exec -it {} bash 这会启动容器,但随后会出现以下错误。
the input device is not a TTY

有人有什么想法能够解决这个问题吗?

补充说明:我还忘了提到我已经定义了ENTRYPOINT,无法覆盖它。


-it d? - Oliver Charlesworth
最佳组合! - jvhashe
2个回答

11

那么请这样做:

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

由于xargs在执行其参数时不分配新的tty。


0

如果您只想“bash”进入容器,无需在容器ID之间传递。您可以直接运行

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

例如,如果我们采用Ubuntu基础镜像。
docker run -it --rm ubuntu /bin/bash
root@f80f83eec0d4:/#

来自文档

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

/bin/bash命令覆盖了Dockerfile中CMD指令指定的默认命令。


谢谢,我忘了提到我已经定义了一个无法覆盖的ENTRYPOINT。 - jvhashe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接