我在OS X 10.8.4(Mountain Lion)下运行Vagrant下的Docker,每当我尝试删除保存的图像时,都会出现错误:
$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input
根据rmi帮助,正确的语法是docker rmi IMAGE[IMAGE…],我不知道该怎么做。
如何删除图像?
$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1
$docker info
Containers: 1
Images: 3
有趣的是,当我运行docker ps时,根本没有容器出现。运行docker图像显示四(4)个基本图像和一(1)个节点图像。
更新,正如VonC在如何删除旧Docker容器中所评论的。
使用Docker 1.13(2016年第4季度),您现在可以:
docker系统prune将删除所有未使用的数据(即,按顺序:容器停止、没有容器的卷和没有容器的图像)。
请参阅PR 26108和commit 86de7c0,它们引入了一些新命令,以帮助可视化Docker守护程序数据在磁盘上占用的空间,并允许轻松清理“不需要的”多余空间。
docker system prune
WARNING! This will remove:
- all stopped containers
- all volumes not used by at least one container
- all images without at least one container associated to them
Are you sure you want to continue? [y/N] y
以下是删除docker图像/容器的一些方法:
删除单个图像
docker rmi image_name:version/image-id
删除所有图像
docker rmi $(docker images -qf "dangling=true")
杀死容器并将其移除:
docker rm $(docker kill $(docker ps -aq))
注:用停止代替压井,以实现正常停机
删除除“我的图像”之外的所有图像
使用grep删除除我的图像和ubuntu之外的所有内容
docker rmi $(docker images | grep -v 'ubuntu\|my-image' | awk {'print $3'})
或(无锥子)
docker rmi$(docker images--quiet|grep-v$(dockerimages--quiet ubuntu:my image))