Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 无法将docker pid管道传输到bash命令_Shell_Awk_Docker_Xargs - Fatal编程技术网

Shell 无法将docker pid管道传输到bash命令

Shell 无法将docker pid管道传输到bash命令,shell,awk,docker,xargs,Shell,Awk,Docker,Xargs,我通常希望在docker映像上打开bash shell。这方面的多命令流程是: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bba983d72d48 scubbo/datenight "apachectl -DFOREGROU" 7

我通常希望在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

我倾向于这样做,但我会把我的命令嵌套起来

docker exec -it $(docker ps | awk 'NR > 1 {print $1}') bash

不过警告一句,如果有多个容器在运行,您将收到错误。

注意,
docker ps-q
只输出运行容器的ID

如果您只启动了一个容器,只需执行以下操作

docker exec-it$(docker ps-q)bash

如果要输入上次启动的容器

docker exec-it$(docker ps-lq)bash

如果在启动容器时为其命名

docker run——名称怀旧…

然后你就可以用

docker exec-it$(docker ps-q--filter“name=怀旧”)bash

检查文件


谢谢,这是一组简洁的命令!不过,我仍然不确定为什么不能将id导入
xargs docker exec