我在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)个节点图像。


当前回答

移除容器

删除特定容器码头工rm CONTAINER_ID CONTAINER-ID对于单个图像码头工人rm 70c0e19168cf对于多个图像码头工人rm 70c0e19168cf c2ce80b62174删除退出的容器docker ps-a-f状态=已退出移除所有容器docker ps-q-a | xargs docker rm

删除图像

docker rmi IMAGE_ID

删除特定图像对于单个图像码头工人rmi ubuntu对于多个图像阿尔班岛码头工人删除悬挂图像悬挂图像是与任何标记图像无关的层,因为Docker图像由多个图像组成。docker rmi-f$(docker images-f danging=true-q)删除所有Docker图像docker rmi-f$(docker图像-a-q)


删除卷

要列出卷,请运行docker volume ls

删除特定卷docker卷rm volume_NAME删除悬挂卷docker卷rm$(docker卷ls-f悬空=true-q)删除容器及其卷码头工rm-v CONTAINER_NAME

其他回答

移除容器

删除特定容器码头工rm CONTAINER_ID CONTAINER-ID对于单个图像码头工人rm 70c0e19168cf对于多个图像码头工人rm 70c0e19168cf c2ce80b62174删除退出的容器docker ps-a-f状态=已退出移除所有容器docker ps-q-a | xargs docker rm

删除图像

docker rmi IMAGE_ID

删除特定图像对于单个图像码头工人rmi ubuntu对于多个图像阿尔班岛码头工人删除悬挂图像悬挂图像是与任何标记图像无关的层,因为Docker图像由多个图像组成。docker rmi-f$(docker images-f danging=true-q)删除所有Docker图像docker rmi-f$(docker图像-a-q)


删除卷

要列出卷,请运行docker volume ls

删除特定卷docker卷rm volume_NAME删除悬挂卷docker卷rm$(docker卷ls-f悬空=true-q)删除容器及其卷码头工rm-v CONTAINER_NAME

Docker提供了一些删除图像的命令。

显示/删除图像:

docker images
docker images -a # All images
docker images --no-trunc # List the full length image IDs

docker images --filter "dangling=true" // Show unstage images
docker rmi $(docker images -f "dangling=true" -q) # Remove on unstages images

docker rmi <REPOSITORY> or <Image ID> # Remove a single image

docker image prune # Interactively remove dangling images
docker image prune -a # Remove all images

or 

docker rmi -f $(sudo docker images -a -q)

此外,您还可以使用过滤器参数删除一次:

例子:

$docker images --filter "before=<hello-world>" // It will all images before hello-world

$docker images --filter "since=<hello-world>" // It will all images since hello-world

因此,您可以像这样删除过滤器图像:

docker rmi $(docker images --filter "since=<hello-world>")
docker rmi $(docker images --filter "before=<hello-world>")

更新,正如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 rmi节点。这应该奏效。

看到所有创建的容器就像docker ps-a一样简单。

要删除所有现有容器(而不是图像!),请运行docker rm$(docker ps-aq)

我的问题是我有两张同名的照片解决方案是在名称或id之后添加标记

sudo docker rmi <NAME>:<TAG>

ex:

sudo docker rmi php:7.0.4-fpm