我在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 images
显示四(4)个 base
图像和一(1)个 node
图像 .
17 回答
这是一个用于删除标记(命名)图像及其容器的shell脚本 . 保存为docker-rmi并使用'docker-rmi my-image-name'运行
试试
docker rmi node
. 这应该工作 .查看所有创建的容器就像
docker ps -a
一样简单 .要删除所有现有容器(不是图像!),请运行
docker rm $(docker ps -aq)
使用删除所有这些
第1步:杀死所有容器
第2步:首先给他们RM
第3步:使用force删除图像
如果您收到错误,说明由于子项依赖性而无法删除,请使用步骤1
删除容器
删除图像
Remove specific images
for single image
悬挂图像是与任何标记图像无关的层,因为Docker图像由多个图像构成 .
删除卷
要列出卷,请运行
docker volume ls
图片:
容器:
docker rm container_name
docker rmi image_name
查找容器ID,
列出图像:
删除图片:
强制删除:
要使用图像ID从Docker中删除图像:
首先,我们必须停止并删除与我们要删除的Docker镜像相连的Docker容器 .
所以,首先
docker stop container-id
- 停止正在运行的容器docker rm container-id
- 删除/删除容器然后,
docker rmi image-id
- 删除/删除图像以下是删除docker镜像/容器的一些方法:
删除单张图片
删除所有图像
杀死容器并将其删除:
注意:将
kill
替换为stop
以实现正常关闭删除除“my-image”以外的所有图像
使用grep删除除
my-image
和ubuntu
之外的所有内容或者(没有awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
删除所有泊坞容器
删除所有泊坞窗图像
更新,由VonC在How to remove old Docker containers评论 .
使用Docker 1.13(2016年第4季度),您现在拥有:
docker system prune 将删除所有未使用的数据(即按顺序:容器停止,没有容器的卷和没有容器的图像) .
请参阅PR 26108和commit 86de7c0,它们引入了一些新命令,以帮助显示Docker守护程序数据在磁盘上占用多少空间并允许轻松清理"unneeded"多余 .
对于1.13及更高版本:
比较:
docker image rm
ofdocker image rm
和docker rmi
ofdocker rmi
,[OPTIONS]
好像没什么区别 .来自:Introducing Docker 1.13
如果要自动/定期清理已退出的容器并删除正在运行的容器未使用的映像和卷,可以下载映像
meltwater/docker-cleanup
.我在 生产环境 中使用它,因为我们每天在多个服务器上部署几次,而且我不想去每个服务器清理(这会很痛苦) .
赶紧跑:
它将每30分钟运行一次(或者使用DELAY_TIME = 1800选项设置它),并清理已退出的容器和图像 .
更多细节:https://github.com/meltwater/docker-cleanup/blob/master/README.md
对我来说,以下工作正常:
然后通过运行以下内容来继续删除图像:
Docker提供了一些删除
images
的命令 .例:
所以你可以删除这样的过滤器图像: