我想通过将第一个容器 ID 传送给 docker exec 来为我的 Docker 实例启动一个 bash 终端:
docker ps | head -2 | grep -v CONTAINER | cut -d' ' -f1 | docker exec -i -t - bash
最终-
应该将前一个管道进程的标准输出作为变量传递。但我得到的却是:
Error response from daemon: no such id: -
我猜测该docker
程序会干扰 shell 读取参数的方式。
有办法解决这个问题吗?(通过程序docker
或 shell 解决方案)。
附加信息
该子管道:
docker ps | head -2 | grep -v CONTAINER | cut -d' ' -f1
产生输出:
7dae6507d01a
这是正确的。所以这里没有问题。
答案1
-
不会被 shell 解析,它只是一个参数,某些命令会将其识别为“从 stdin 读取”。显然,docker 不会。
您需要使用 xargs 将 id 作为实际参数传递。这应该有效:
docker ps | head -2 | grep -v CONTAINER | cut -d' ' -f1 | xargs -I '{}' docker exec -i -t '{}' bash