我经常需要在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
经过一番搜索,我找到了这个问题。但是,如果我去掉-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
xargs docker exec
。 - scubbo