【问题标题】:Piping docker run container ID to docker exec将 docker run 容器 ID 连接到 docker exec
【发布时间】:2017-11-18 12:41:02
【问题描述】:

在我的开发过程中,我发现自己经常在生成的容器 ID 上发出 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

有人知道如何解决这个问题吗?

编辑:我也忘了提到我定义了一个入口点并且不能覆盖它。

【问题讨论】:

  • -它 d?.
  • @OliverCharlesworth 两全其美!

标签: bash docker pipe exec


【解决方案1】:

改为这样做:

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

因为xargs 执行它的参数而不分配新的 tty。

【讨论】:

    【解决方案2】:

    如果您只想“bash”进入容器,则不必传递容器 ID。你可以简单地运行

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

    例如,如果我们取 ubuntu 基础镜像

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

    来自documentation

    -t : 分配一个伪终端
    -i :即使没有附加,也保持 STDIN 打开
    --rm : 容器退出时自动移除

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

    【讨论】:

    • 谢谢,我忘了说我已经定义了一个不能被覆盖的入口点。
    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 2017-11-10
    • 2022-11-01
    • 2021-07-18
    • 2017-08-14
    • 2017-05-19
    • 2019-08-04
    • 2018-12-04
    相关资源
    最近更新 更多