你不是想跑 docker ps -a -q 和 docker stop $(docker ps -a -q) 在两个不同的控制台/用户?显示的错误实际上是两个不同的错误:
docker ps -a -q
docker stop $(docker ps -a -q)
docker ps -q -a
docker stop ...
编辑: 如果使用 sudo 每个命令都在不同的shell / subshell中运行,它们继承了特权/环境。但是从最外层开始按顺序调用子壳。因此脚本将按顺序调用 docker ps 然后 sudo docker stop 。第一个不会提升特权。
sudo
docker ps
sudo docker stop
我没有意识到sudo在命令替换中也是必需的:
sudo docker stop $(stop docker ps -a -q)