我最近开始使用Docker并且从未意识到我应该使用docker-compose down
代替ctrl-c
或docker-compose stop
来摆脱我的实验。我现在在本地有大量不需要的泊坞窗图像。
我是否可以运行一个标志来删除所有本地docker图像&容器
像docker rmi --all --force
这样的东西 - 所有标志都不存在,但我正在寻找具有类似想法的东西。
答案 0 :(得分:127)
要删除所有容器,包括其卷使用,
docker rm -vf $(docker ps -a -q)
要删除所有图像,
docker rmi -f $(docker images -a -q)
请记住,在删除创建这些容器的所有图像之前,应删除所有容器。
答案 1 :(得分:59)
使用此删除所有内容:
docker system prune -a --volumes
删除所有未使用的容器,卷,网络和图像
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all volumes not used by at least one container
- all images without at least one container associated to them
- all build cache
https://docs.docker.com/engine/reference/commandline/system_prune/#extended-description
答案 2 :(得分:48)
为简单起见,请执行以下操作:
$ docker system prune --all
一切都意味着:
- 所有停止的容器
- 至少一个容器未使用的所有网络
- 所有没有至少与之关联的容器的图像
- 所有构建缓存
答案 3 :(得分:13)
Docker提供了一个命令,该命令将清除悬空(不与容器相关联)的所有资源(图像,容器,卷和网络):
docker system prune
要另外删除所有停止的容器和所有未使用的图像(不仅仅是悬空的图像),请在命令中添加-a标志:
docker system prune -a
有关更多详细信息,请访问link
答案 4 :(得分:7)
docker image prune -a
删除所有未使用的图像,而不仅仅是悬空图像。添加
-f
选项 力。
本地docker版本:17.09.0-ce,Git commit:afdb6d4,OS / Arch:darwin / amd64
$ docker image prune -h
Flag shorthand -h has been deprecated, please use --help
Usage: docker image prune [OPTIONS]
Remove unused images
Options:
-a, --all Remove all unused images, not just dangling ones
--filter filter Provide filter values (e.g. 'until=<timestamp>')
-f, --force Do not prompt for confirmation
--help Print usage
答案 5 :(得分:2)
简单易用的命令
要删除所有图像
docker rmi $(docker images -a)
删除处于退出状态的容器
docker rm $(docker ps -a -f status=exited -q)
要删除处于创建状态的容器
docker rm $(docker ps -a -f status=created -q)
注意:删除所有容器,然后删除图像
答案 6 :(得分:1)
要删除所有图像:
docker rmi -f $(docker images -a | awk {'print $3'})
说明:
docker images -a | awk {'print $ 3'}
此命令将返回所有图像ID,然后用于使用其ID删除图像。
答案 7 :(得分:1)
sudo docker rm image <image_id>
/ docker rm image <image_id>
答案 8 :(得分:1)
docker rmi $(docker images -q) --force
答案 9 :(得分:1)
要删除所有Docker本地Docker映像,请遵循2个步骤::
第1步:泊坞窗图片(列出所有具有ID的泊坞窗图片)
example :
REPOSITORY TAG IMAGE ID CREATED SIZE
pradip564/my latest 31e522c6cfe4 3 months ago 915MB
步骤2:docker image rm 31e522c6cfe4(IMAGE ID)
OUTPUT : image deleted
答案 10 :(得分:0)
其他答案似乎没有提供一种简单的方法来删除具有“自动生成”名称的容器。这是我最常用的意图,所以我为它写了一个 Powershell 脚本:
$containers = (docker container list -a).Split("`n") | % { [regex]::split($_, "\s+") | Select -Last 1 }
$containersToRemove = $containers | Where { ([regex]"^[a-z]+_[a-z]+$").IsMatch($_) }
foreach ($container in $containersToRemove) { docker container rm $container }
当然要小心,因为这个脚本只是使用了一个正则表达式:^[a-z]+_[a-z]+$
所以只有当你知道你关心的容器不使用相同的格式(小写字、下划线、小写字)时才使用它;或者至少只运行前两行,运行 echo $containersToRemove
,并在实际执行删除之前检查列表。
答案 11 :(得分:0)
有一个 bug in Windows,其中删除图像后不会回收磁盘空间。重新启动 Docker/Windows 不起作用。
如果您使用的是 Docker 桌面,following 对我有用。转到疑难解答 -> 清理/清除数据。这可以为您节省大量磁盘空间,甚至可能超出您的预期。
请注意:这会删除所有内容,因此在执行此操作之前请三思!
答案 12 :(得分:0)
这是我使用的命令,并将其放在批处理文件中以删除所有内容:
回显“正在删除容器:” &&如果[-n“ $(docker container ls -aq)” ];然后docker container stop $(docker container ls -aq);码头工人 容器rm $(docker container ls -aq); fi;回声“正在删除图像:” &&如果[-n“ $(docker images -aq)”];然后docker rmi -f $(docker 图片-aq); fi;如果[-n“ $(docker volume ls -q)“];然后是docker volume rm $(docker volume ls -q); fi; echo “删除网络:” &&如果[-n“ $(docker network ls | awk'{print $ 1“” $ 2}'| grep -v'ID | bridge | host | none'| awk'{print $ 1}')“]; 然后docker network rm $(docker network ls | awk'{print $ 1“” $ 2}'| grep -v'ID | bridge | host | none'| awk'{print $ 1}'); fi;
答案 13 :(得分:0)
使用xargs
docker image ls -q | xargs -I {} docker image rm -f {}
答案 14 :(得分:0)
添加到techtabu可接受的答案中,如果您在Windows上使用docker,则可以使用以下命令
for /F "delims=" %A in ('docker ps -a -q') do docker rm %A
在这里,命令docker ps -a -q
列出了所有图像,并且此列表一一传递给了docker rm
有关此命令格式在Windows cmd中如何工作的更多信息,请参见this。
答案 15 :(得分:0)
删除而不调用docker :
rm -rf /var/lib/docker
不建议您是否可以正常运行docker,但是如果出于任何原因,这也会删除所有大文件。
答案 16 :(得分:0)
要删除所有图像:
docker rmi $(docker images -a -q)
其中-a全部,而-q仅返回图像ID
要删除未使用的图像和容器:
docker system prune
当心,就像您使用的是docker swarm一样,并且您的本地计算机正在加入远程swarm(作为经理/工作人员)时,您的本地将是已部署的存储库。执行此操作将删除已部署的映像。
答案 17 :(得分:0)
您可以尝试这样:
docker system prune