如何在Docker中删除图像?
我在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
图像。
尝试docker rmi node
。 这应该工作。
看到所有创build的容器就像docker ps -a
一样简单。
删除所有现有的容器(不是图像!)运行docker rm $(docker ps -aq)
以下是删除docker镜像/容器的一些方法:
删除单个图像
docker rmi image_name:version/image-id
删除所有图像
docker rmi $(docker images -qf "dangling=true")
杀死容器并将其移除:
docker rm $(docker kill $(docker ps -aq))
注意:replacekill
stop
正常关机
删除除“我的图像”以外的所有图像
使用grep删除除了my-image
和ubuntu
docker rmi $(docker images | grep -v 'ubuntu\|my-image' | awk {'print $3'})
或者(没有awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
删除所有docker集装箱
docker rm $(docker ps -a -q)
删除所有泊坞窗图像
docker rmi $(docker images -q)
使用Image Id从Docker中移除图像
-
获取所有图像的列表
docker images
-
确定要删除的图像的图像ID,例如:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE kweku360/java latest 08d3a9b8e166 2 weeks ago 5.733 GB`
-
最后使用图片ID去除图片(只需要前三位数字)
docker rmi 08d
更新,如VonC在如何删除旧的Docker容器中的评论
随着docker1.13(2016年第四季度),你现在有:
docker system prune
将删除所有未使用的数据(即按顺序:容器停止,没有容器的卷和没有容器的图像)。
请参阅PR 26108和提交86de7c0 ,它们引入了一些新命令来帮助可视化Docker守护程序数据在磁盘上占用多less空间,并允许轻松清除“不需要的”多余部分。
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 rm container_name
docker rmi image_name
docker help
rm删除一个或多个容器
rmi删除一个或多个图像
去除容器
-
去除特定的容器
docker rm CONTAINER_ID CONTAINER_ID
-
对于单张图片
docker rm 70c0e19168cf
-
对于多个图像
docker rm 70c0e19168cf c2ce80b62174
-
-
删除退出的容器
docker ps -a -f status=exited
-
删除所有的容器
docker ps -q -a | xargs docker rm
删除图像
docker rmi IMAGE_ID
-
删除特定的图像
-
为单个图像
docker rmi ubuntu
-
为多个图像
docker rmi ubuntu alpine
-
-
删除悬挂的图像
由于Docker图像由多个图像构成,所以悬挂的图像是与任何标记的图像没有关系的图层。docker rmi -f $(docker images -f dangling=true -q)
-
删除所有的Docker镜像
docker rmi -f $(docker images -a -q)
删除卷
要列出卷运行docker volume ls
-
删除特定的音量
docker volume rm VOLUME_NAME
-
删除悬空卷
docker volume rm $(docker volume ls -f dangling=true -q)
-
删除一个容器和它的卷
docker rm -v CONTAINER_NAME
dockerrmi 91c95931e552
Error response from daemon: Conflict, cannot delete 91c95931e552 because the container 76068d66b290 is using it, use -f to force FATA[0000] Error: failed to remove one or more images
find容器ID,
# docker ps -a # docker rm daf644660736
这里有一个shell脚本来删除一个标记(命名)的图像,它是容器。 另存为docker-rmi并运行“docker-rmi my-image-name”
#!/bin/bash IMAGE=$1 if [ "$IMAGE" == "" ] ; then echo "Missing image argument" exit 2 fi docker ps -qa -f "ancestor=$IMAGE" | xargs docker rm docker rmi $IMAGE
如果要自动/定期清理已退出的容器,并删除正在运行的容器未使用的图像和卷,则可以下载此图像融水/docker清理。
我在生产中使用它,因为我们每天在多个服务器上部署数次,我不想去每个服务器清理(这将是一个痛苦)。
赶紧跑:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest
它将每隔30分钟运行一次(或者使用DELAY_TIME = 1800选项设置它),并清理退出的容器和图像。
更多细节: https : //github.com/meltwater/docker-cleanup/blob/master/README.md
首先,我们必须停止并移除使用我们将要移除的docker-image附加的docker-containers。
所以,首先
-
docker stop container-id
– 停止正在运行的容器 -
docker rm container-id
– 删除/删除容器
然后,
-
docker rmi image-id
– 删除/删除图像
全部删除使用
第1步:杀死所有容器
for i in `sudo docker ps -a | awk '{ print $1 }'`; do sudo docker kill $i ; done
第2步:先RM
for i in `sudo docker ps -a | awk '{ print $1 }'`; do sudo docker rm $i ; done
步骤3:使用强制删除图像
for i in `sudo docker images | awk '{ print $3}'`; do sudo docker rmi --force $i ; done
使用第1步,以防止出现错误,说明由于子依赖关系,无法删除它
对于1.13及更高版本:
docker image rm [OPTIONS] IMAGE [IMAGE...]
比较:
-
docker image rm
和 -
docker rmi
的文档 ,
[OPTIONS]
似乎没有区别。
--force , -f Force removal of the image --no-prune Do not delete untagged parents
来自: 介绍Docker 1.13
CLI重组
在Docker 1.13中,我们将每个命令重新组合,使其位于与其交互的逻辑对象下。 例如容器的
list
和start
现在是docker container
的子命令,history
是docker image
的子命令。通过这些更改,我们可以清理Docker CLI语法,改进帮助文本并简化Docker的使用。 旧的命令语法仍然受支持,但我们鼓励大家采用新的语法 。
对我来说,以下工作正常:
> docker images REPOSITORY TAG IMAGE ID CREATED SIZE debian jessie 86baf4e8cde9 3 weeks ago 123MB ubuntu yakkety 7d3f705d307c 3 weeks ago 107MB alpine 3.5 074d602a59d7 7 weeks ago 3.99MB
然后继续,通过运行一些像这样删除一个图像:
> docker rmi debian:jessie > docker rmi ubuntu:yakkety > docker rmi alipine:3.5