在docker命令中使用$()似乎不起作用

时间:2019-02-27 14:44:57

标签: linux docker unix

我想使用命令sudo docker stop $(docker ps -a -q)停止所有正在运行的docker容器。但是当我运行它时,docker输出


Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied
"docker stop" requires at least 1 argument.
See 'docker stop --help'.

Usage:  docker stop [OPTIONS] CONTAINER [CONTAINER...]

Stop one or more running containers

仅运行docker ps -a -q会输出Docker ID,但是当我将其与Docker命令结合使用时,它将无法工作。谢谢。

2 个答案:

答案 0 :(得分:0)

您不是要在两个不同的控制台/用户中运行docker ps -a -qdocker stop $(docker ps -a -q)吗?显示的错误实际上是两个不同的错误:

  1. docker ps -q -a由于权限不足而无法完成
  2. docker stop ...由于子shell中的错误而获得空参数列表

编辑: 如果使用sudo,则每个命令都在继承特权/环境的不同Shell /子Shell中运行。但是子shell是从最外层开始按顺序调用的。因此,脚本将依次按docker pssudo docker stop的顺序调用。第一个不会提升特权。

答案 1 :(得分:0)

我还没有意识到在命令替换中还需要sudo:

nuget pack