重启所有正在运行的Docker容器的命令是什么?

141

如何重新启动所有正在运行的Docker容器?主要寻求一种快捷方式,而不是执行

docker restart containerid1 containerid2

9个回答

299

只需运行

docker restart $(docker ps -q)

更新

若要重启所有容器(包括已停止正在运行的),请使用docker restart $(docker ps -a -q),如下面的答案所示。


1
我知道 -a 列出未运行的容器,但 -q 代表什么? - Jim Aho
1
docker ps --help-q, --quiet 仅显示数字ID您可以通过命令docker [command] --help获得每个 docker 命令的帮助 - Andrey Romashin
这个程序尝试为docker ps --all命令输出表格中的每个值启动一个容器,因此它将尝试运行docker restart 'up for 2 weeks ago'docker restart '33060/tcp'等等。最好以某种方式限制docker ps命令的输出只显示名称列。例如:docker restart $(docker ps --all --format "{{.Names}}") - Brian H.
1
-1 是因为更新后的答案重新启动了 _所有容器_,而原始问题是要重新启动 _所有 正在运行的 容器_。 - John Rocha
你是对的约翰。我纠正了我的更新答案。 - Andrey Romashin
对我来说,这个命令出现了以下错误:"docker restart" 需要至少一个参数。添加 '-a' 选项和 '-q' 选项一起使用可以解决问题。 - Karthik Rao

108

对我来说,现在是:

docker restart $(docker ps -a -q)

4
值得向大家提到的是,它只在PowerShell中起作用。 - st35ly
5
仅限于PowerShell吗?不,它也适用于Bash... - Daddy32
同意,它也可以在Bash中工作。 - Herii
1
这将重新启动所有已停止和正在运行的容器。 - Boris Ivanov

30

如果您拥有docker-compose,您只需要执行以下操作:

docker-compose restart 

你可以获得一个漂亮的输出,其中包括容器名称以及其重新启动的状态(完成/错误)

以下是安装的官方指南:https://docs.docker.com/compose/install/


我在一台VPS上运行多个项目,有时重启后,其中一些项目会出现启动问题,我不得不移动到每个Docker项目并解决它们。但是其他答案适用于启动所有项目,而不仅仅是一个。 - Herii

28

只启动已停止的容器:

docker start $(docker ps -a -q -f status=exited)

(在Windows中,它可以在PowerShell中运行。)


12

开始所有容器:

  docker restart $(docker ps -a -q)

如果您没有执行此操作的权限,请使用sudo:

sudo docker restart $(sudo docker ps -a -q)

2
重新启动所有在线的Docker容器。
docker restart $(docker ps -a -q -f status=healthy)

启动所有已停止的容器:

docker start $(docker ps -a -q -f status=exited)

其他状态选项可能包括:

createdrestartingrunningremovingpausedexiteddead


0

要启动多个容器,只需使用特定的容器 ID:$ docker restart container-id1 container-id2 container-id3 ...


0
另一种方法是使用docker ps -q | xargs docker restart命令。

-1

启动最后5个容器

 docker start $(docker ps -n 5 -q)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接