停止并删除所有docker容器

jjb*_*kir 15 docker

使用Docker容器创建干净的平板的最佳方法是什么?很多次我觉得从头开始更容易,但我有一堆容器,我不知道他们的状态是什么,然后当我运行docker rm它不会让我,因为docker容器仍然可以使用.

Joh*_*ose 23

停止所有容器

docker stop $(docker ps -a -q)
Run Code Online (Sandbox Code Playgroud)

删除所有容器

docker rm $(docker ps -a -q)
Run Code Online (Sandbox Code Playgroud)

在这里找到更多命令

  • 未知速记标志:-a 中的“a” (8认同)
  • 在第一个命令中,您不需要“-a”标志。docker ps 将仅列出正在运行的容器。 (2认同)

Wil*_*eng 16

一个命令行即可清理所有容器

docker system prune -f ; docker volume prune -f ;docker rm -f -v $(docker ps -q -a)
Run Code Online (Sandbox Code Playgroud)


Eug*_*yer 12

Docker引入了新的命名空间和命令,每个人都应该学习,而不是坚持使用旧的habbits.

删除不再需要的容器(已停止)

$ docker container prune


删除不再需要的图像

这意味着,它只会删除未标记但未被"最新"指向的图像 - 因此不会删除您经常使用的真实图像 $ docker image prune


删除任何现有容器未使用的所有卷

(甚至停止的容器确实声称量).这通常可以清理悬空的容器 - 很久以前就已经删除了容器.它永远不应该删除命名卷,因为它们的容器应该存在/正在运行.小心,确保您的堆栈至少在运行之前已经运行 docker volume prune


未使用的网络相同

docker network prune


最后,如果你想摆脱所有垃圾 - 确保你的生产没有任何反应,请确保所有堆栈都在运行然后运行

docker system prune

  • IMO `docker system prune` 是这个问题的真正答案 (4认同)
  • “docker system prun”最后缺少一个“e” (2认同)
  • 尽管这很有用,但这些命令都不允许停止所有正在运行的容器,而只是清理已停止的容器留下的内容。所以首先你仍然需要坚持“旧习惯”并执行`docker stop $(docker ps -q)`来优雅地停止它们,或者如果有一些“reveld”则执行`docker Kill $(docker ps -q)` “不想被停止的容器。 (2认同)

Tra*_*der 8

一班轮:

docker rm -f $(docker ps -a -q)
Run Code Online (Sandbox Code Playgroud)

如果您只想执行正在运行的操作,请删除-a.


wal*_*adx 7

这是我用于此类事情的一个好要点:从人们似乎不喜欢的这个链接(https://gist.github.com/bastman/5b57ddb3c11942094f8d0a97d461b430

删除卷

$ docker volume rm $(docker volume ls -qf dangling=true)
$ docker volume ls -qf dangling=true | xargs -r docker volume rm
Run Code Online (Sandbox Code Playgroud)

删除网络

$ docker network ls  
$ docker network ls | grep "bridge"   
$ docker network rm $(docker network ls | grep "bridge" | awk '/ / { print $1 }')
Run Code Online (Sandbox Code Playgroud)

删除 docker 镜像

// 请参阅:http ://stackoverflow.com/questions/32723111/how-to-remove-old-and-unused-docker-images

$ docker images
$ docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
$ docker images | grep "none"
$ docker rmi $(docker images | grep "none" | awk '/ / { print $3 }')
Run Code Online (Sandbox Code Playgroud)

删除docker容器

// 请参阅:http ://stackoverflow.com/questions/32723111/how-to-remove-old-and-unused-docker-images

$ docker ps
$ docker ps -a
$ docker rm $(docker ps -qa --no-trunc --filter "status=exited")
Run Code Online (Sandbox Code Playgroud)

本质上,你想要杀死所有正在运行的容器,删除每个镜像,卸载 docker,重新安装你想要的版本,这应该是尽可能干净的。


And*_*toy 7

docker ps -aq | xargs docker stop | xargs docker rm
Run Code Online (Sandbox Code Playgroud)

或者

docker ps -aq | xargs docker rm -f
Run Code Online (Sandbox Code Playgroud)

  • 请为用户提供您提到的 docker 命令的简要详细信息。细节总是有帮助的,特别是对于学生和初级开发人员。 (3认同)
  • 添加如下所示的“-r”,以便在 docker ps -aq 返回空时停止容器而不会出现错误: docker ps -aq | xargs -r docker 停止 (3认同)

Ras*_*bal 6

停止容器:

docker stop container1_id container2_id containerz_id 
Run Code Online (Sandbox Code Playgroud)

删除所有图像:

docker system prune --all
Run Code Online (Sandbox Code Playgroud)


Ale*_*sco 5

我们可以用一个班轮来实现这一点(也可以移除正在运行的容器)

docker container rm $(docker container ls -aq) -f
Run Code Online (Sandbox Code Playgroud)

它能做什么

docker container ls -aq 仅列出容器的 ID

docker container rm $(..) -f 强行删除所有容器的 id