如何在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-imageubuntu

 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中移除图像

  1. 获取所有图像的列表

     docker images 
  2. 确定要删除的图像的图像ID,例如:

     REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE kweku360/java latest 08d3a9b8e166 2 weeks ago 5.733 GB` 
  3. 最后使用图片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删除一个或多个图像

去除容器

  1. 去除特定的容器

     docker rm CONTAINER_ID CONTAINER_ID 
    • 对于单张图片

       docker rm 70c0e19168cf 
    • 对于多个图像

       docker rm 70c0e19168cf c2ce80b62174 
  2. 删除退出的容器

     docker ps -a -f status=exited 
  3. 删除所有的容器

     docker ps -q -a | xargs docker rm 

删除图像

 docker rmi IMAGE_ID 
  1. 删除特定的图像

    • 为单个图像

       docker rmi ubuntu 
    • 为多个图像

       docker rmi ubuntu alpine 
  2. 删除悬挂的图像
    由于Docker图像由多个图像构成,所以悬挂的图像是与任何标记的图像没有关系的图层。

     docker rmi -f $(docker images -f dangling=true -q) 
  3. 删除所有的Docker镜像

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

删除卷

要列出卷运行docker volume ls

  1. 删除特定的音量

     docker volume rm VOLUME_NAME 
  2. 删除悬空卷

     docker volume rm $(docker volume ls -f dangling=true -q) 
  3. 删除一个容器和它的卷

     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中,我们将每个命令重新组合,使其位于与其交互的逻辑对象下。 例如容器的liststart现在是docker container的子命令, historydocker 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