[英]Using $() in docker commands doesn't seem to work
I want to stop all running docker containers with the command sudo docker stop $(docker ps -a -q)
. 我想使用命令
sudo docker stop $(docker ps -a -q)
停止所有正在运行的Docker容器。 But when I run it, docker outputs 但是当我运行它时,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
Just running docker ps -a -q
outputs the Docker IDs, but when I combine it with a Docker command, it doesn't work. 仅运行
docker ps -a -q
输出Docker ID,但是当我将其与Docker命令结合使用时,它将无法正常工作。 Thank you. 谢谢。
Aren't you trying to run docker ps -a -q
and docker stop $(docker ps -a -q)
in two different consoles/users? 您不是要在两个不同的控制台/用户中运行
docker ps -a -q
和docker stop $(docker ps -a -q)
吗? The error shown is in fact two different errors: 显示的错误实际上是两个不同的错误:
docker ps -q -a
cannot complete due to insufficient permissions docker ps -q -a
由于权限不足而无法完成 docker stop ...
gets empty argument list due to error in subshell docker stop ...
由于子外壳错误而获取空参数列表 Edit: If using sudo
each command is running in different shell/subshell which inherits privileges/environment. 编辑:如果使用
sudo
每个命令都在继承特权/环境的不同Shell /子Shell中运行。 But the subshells are invoked in order from the outermost. 但是子shell是从最外层开始按顺序调用的。 So the script will be invoket in order
docker ps
and then sudo docker stop
. 因此,脚本将按docker
docker ps
顺序调用,然后按sudo docker stop
docker stop的顺序调用。 The first one will not have privileges elevated. 第一个将没有特权提升。
我没有意识到在命令替换中还需要sudo:
sudo docker stop $(stop docker ps -a -q)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.