gpt4 book ai didi

shell - 无法通过管道将 docker pid 传递给 bash 命令

转载 作者:行者123 更新时间:2023-12-01 01:58:29 24 4
gpt4 key购买 nike

我通常想在 docker 镜像上打开一个 bash shell。一个多命令过程将是:

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bba983d72d48 scubbo/datenight "apachectl -DFOREGROU" 7 days ago Up 7 days 0.0.0.0:80->80/tcp pensive_bell
$ docker exec -it bba983d72d48 bash

我想缩短这个。但是,我收到以下错误:
$ docker ps | awk 'NR > 1 {print $1}' | xargs -I {} docker exec -it {} bash
cannot enable tty mode on non tty input

通过一点谷歌搜索,我找到了 this issue - 但是,如果我放弃 -t选项,命令立即“完成”。

我已经确认手动复制粘贴 $ docker ps | awk 'NR > 1 {print $1}' 的输出进入 docker exec -it {} bash的适当位置是成功的。

编辑:删除 docker ps从管道,以下也失败:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f20409c37b7 scubbo/datenight "apachectl -DFOREGROU" 8 days ago Up 8 days 0.0.0.0:80->80/tcp drunk_northcutt
$ docker ps -q
4f20409c37b7
$ echo '4f20409c37b7' | xargs -I {} docker exec -it {} bash
cannot enable tty mode on non tty input

最佳答案

请注意 docker ps -q仅输出正在运行的容器的 id

如果您只启动了一个容器,请执行以下操作
docker exec -it $(docker ps -q) bash
如果你想进入最后启动的容器
docker exec -it $(docker ps -lq) bash
如果您在启动容器时为其命名
docker run --name nostalgic...
然后你可以过滤它
docker exec -it $(docker ps -q --filter "name=nostalgic") bash
检查文档

https://docs.docker.com/engine/reference/commandline/ps/

关于shell - 无法通过管道将 docker pid 传递给 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38600538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com