首页 文章

如何删除Docker中的图像?

提问于
浏览
725

我在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 回答

  • 2

    这是一个用于删除标记(命名)图像及其容器的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
    
  • 1

    试试 docker rmi node . 这应该工作 .

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

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

  • 1

    使用删除所有这些

    第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步:使用force删除图像

    for i in `sudo docker images | awk '{ print $3}'`; do  sudo docker rmi --force $i ; done
    

    如果您收到错误,说明由于子项依赖性而无法删除,请使用步骤1

  • 910

    删除容器

    • To remove a specific container
    docker rm CONTAINER_ID CONTAINER_ID
    
    • For single image
    docker rm  70c0e19168cf
    
    • For multiple images
    docker rm  70c0e19168cf c2ce80b62174
    
    • Remove exited containers
    docker ps -a -f status=exited
    
    • Remove all the containers
    docker ps -q -a | xargs docker rm
    

    删除图像

    docker rmi IMAGE_ID
    
    • Remove specific images

    • for single image

    docker rmi ubuntu
    
    • for multiple images
    docker rmi ubuntu alpine
    
    • Remove dangling images
      悬挂图像是与任何标记图像无关的层,因为Docker图像由多个图像构成 .
    docker rmi -f $(docker images -f dangling=true -q)
    
    • Remove all Docker images
    docker rmi -f $(docker images -a -q)
    

    删除卷

    要列出卷,请运行 docker volume ls

    • Remove a specific volume
    docker volume rm VOLUME_NAME
    
    • Remove dangling volumes
    docker volume rm $(docker volume ls -f dangling=true -q)
    
    • Remove a container and its volumes
    docker rm -v CONTAINER_NAME
    
  • -1

    图片:

    • 列出图像

    码头图片

    • 删除一张图片

    docker rmi image_name

    • 强制删除一个图像

    docker rmi -f image_name

    容器:

    • 列出所有容器

    docker ps -a

    • 删除一个容器

    docker rm container_id

    • 强制删除一个容器

    docker rm -f container_id

  • 181

    docker rm container_name

    docker rmi image_name

    docker help rm删除一个或多个容器rmi删除一个或多个图像

  • 19
    docker rmi  91c95931e552
    

    来自守护程序的错误响应:冲突,无法删除91c95931e552,因为容器76068d66b290正在使用它,使用-f强制FATA [0000]错误:无法删除一个或多个图像

    查找容器ID,

    # docker ps -a
    
    # docker rm  daf644660736
    
  • 60

    列出图像:

    ahanjura@ubuntu:~$ sudo docker images
    

    REPOSITORY TAG IMAGE ID CREATED SIZE 88282f8eda00 19秒前308.5 MB 13e5d3d682f4 19小时前663 MB busybox2最新05fe66bb1144 20小时前1.129 MB ubuntu 16.04 00fd29ccc6f1 5天前110.5 MB ubuntu 14.04 67759a80360c 5天前221.4 MB python 2.7 9e92c8430ba0 7天前680.7 MB busybox最新6ad733544a63 6周前1.129 MB ubuntu 16.10 7d3f705d307c 5个月前106.7 MB

    删除图片:

    ahanjura@ubuntu:~$ sudo docker rmi 88282f8eda00
    

    删除:SHA256:88282f8eda0036f85b5652c44d158308c6f86895ef1345dfa788318e6ba31194删除:SHA256:4f211a991fb392cd794bc9ad8833149cd9400c5955958c4017b1e2dc415e25e9删除:SHA256:8cc6917ac7f0dcb74969ae7958fe80b4a4ea7b3223fc888dfe1aef42f43df6f8删除:SHA256:b74a8932cff5e61c3fd2cc39de3c0989bdfd5c2e5f72b8f99f2807595f8ece43

    ahanjura@ubuntu:~$ sudo docker rmi 13e5d3d682f4
    

    来自守护程序的错误响应:冲突:无法删除13e5d3d682f4(必须强制) - 已停止的容器5593e25eb638正在使用图像

    强制删除:

    ahanjura@ubuntu:~$ sudo docker rmi -f 13e5d3d682f4
    

    删除:SHA256:13e5d3d682f4de973780b35a3393c46eb314ef3db45d3ae83baf2dd9d702747e删除:SHA256:3ad9381c7041c03768ccd855ec86caa6bc0244223f10b0465c4898bdb21dc378删除:SHA256:5ccb917bce7bc8d3748eccf677d7b60dd101ed3e7fd2aedebd521735276606af删除:SHA256:18356d19b91f0abcc04496729c9a4c49e695dbfe3f0bb1c595f30a7d4d264ebf

  • 27

    要使用图像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
    
  • 19

    首先,我们必须停止并删除与我们要删除的Docker镜像相连的Docker容器 .

    所以,首先

    • docker stop container-id - 停止正在运行的容器

    • docker rm container-id - 删除/删除容器

    然后,

    • docker rmi image-id - 删除/删除图像
  • 13

    以下是删除docker镜像/容器的一些方法:

    删除单张图片

    docker rmi image_name:version/image-id
    

    删除所有图像

    docker rmi $(docker images -qf "dangling=true")
    

    杀死容器并将其删除:

    docker rm $(docker kill $(docker ps -aq))
    

    注意:将 kill 替换为 stop 以实现正常关闭

    删除除“my-image”以外的所有图像

    使用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))

  • 3

    删除所有泊坞容器

    docker rm $(docker ps -a -q)
    

    删除所有泊坞窗图像

    docker rmi $(docker images -q)
    
  • 1

    更新,由VonC在How to remove old Docker containers评论 .

    使用Docker 1.13(2016年第4季度),您现在拥有:

    docker system prune 将删除所有未使用的数据(即按顺序:容器停止,没有容器的卷和没有容器的图像) .

    请参阅PR 26108commit 86de7c0,它们引入了一些新命令,以帮助显示Docker守护程序数据在磁盘上占用多少空间并允许轻松清理"unneeded"多余 .

    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
    
  • 1

    对于1.13及更高版本:

    docker image rm [OPTIONS] IMAGE [IMAGE...]
    

    比较:

    • docker image rm of docker image rm

    • docker rmi of docker rmi

    [OPTIONS] 好像没什么区别 .

    --force , -f        Force removal of the image
    --no-prune          Do not delete untagged parents
    

    来自:Introducing Docker 1.13

    CLI重组在Docker 1.13中,我们将每个命令重新分组,以便位于与其交互的逻辑对象下 . 例如,容器的列表和开始现在是docker容器的子命令,history是docker image的子命令 . 这些更改让我们可以清理Docker CLI语法,改进帮助文本并使Docker更易于使用 . 仍然支持旧的命令语法,但我们鼓励每个人采用新的语法 .

  • 509

    如果要自动/定期清理已退出的容器并删除正在运行的容器未使用的映像和卷,可以下载映像 meltwater/docker-cleanup .

    我在 生产环境 中使用它,因为我们每天在多个服务器上部署几次,而且我不想去每个服务器清理(这会很痛苦) .

    赶紧跑:

    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

  • 28

    对我来说,以下工作正常:

    > 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
    
  • -1

    Docker提供了一些删除 images 的命令 .

    显示/删除图像:

    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>")
    

相关问题