868

我在 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图像。

4

19 回答 19

1031

试试docker rmi node。那应该行得通。

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

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

于 2013-07-25T23:09:09.553 回答
575

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

删除单个图像

docker rmi image_name:version/image-id

删除所有图像

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

杀死容器并移除它们:

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

注意:替换killstop正常关机

删除除“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))

于 2013-10-31T16:30:34.767 回答
200

删除所有 docker 容器

docker rm $(docker ps -a -q)

删除所有 docker 镜像

docker rmi $(docker images -q)
于 2015-05-18T19:17:40.633 回答
75

使用镜像 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
    
于 2015-05-19T11:48:10.583 回答
37

图片:

  1. 列出图像

    码头工人图像

  2. 移除一张图片

    docker rmi image_name

  3. 强制删除一张图片

    docker rmi -f 镜像名

容器:

  1. 列出所有容器

    码头工人ps -a

  2. 取出一个容器

    docker rm container_id

  3. 强制移除一个容器

    docker rm -f container_id

于 2018-01-15T13:06:24.787 回答
29

更新,正如 VonC 在How to remove old Docker containers中所评论的那样。

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

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

请参阅PR 26108和提交 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
于 2016-10-06T18:51:44.373 回答
25

移除容器

  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
    
于 2017-03-13T11:13:10.013 回答
19

docker rm container_name

docker rmi image_name

docker help

rm 移除一个或多个容器

rmi 删除一张或多张图片

于 2016-06-07T07:50:35.403 回答
13
docker rmi  91c95931e552

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

查找容器 ID,

# docker ps -a

# docker rm  daf644660736 
于 2015-07-06T08:26:42.470 回答
5

首先,我们必须停止并删除与我们要删除的 Docker 映像附加的 Docker 容器。

所以为此,首先

  • docker stop container-id - 停止正在运行的容器
  • docker rm container-id - 删除/移除容器

然后,

  • docker rmi image-id - 删除/移除图像
于 2017-09-08T09:11:47.007 回答
3

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

显示/删除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)

此外,您还可以使用filter参数一次删除一组图像:

例子:

$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>")
于 2018-11-19T14:24:21.290 回答
3

对于 1.13 及更高版本:

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

比较:

[OPTIONS]似乎没有什么区别。

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

来自:Docker 1.13 简介

CLI 重组

在 Docker 1.13 中,我们将每个命令重新组合到与之交互的逻辑对象下。例如容器的和现在是的子命令list和是的子命令。startdocker containerhistorydocker image

这些更改让我们可以清理 Docker CLI 语法、改进帮助文本并使 Docker 更易于使用。旧的命令语法仍受支持,但我们鼓励大家采用新的语法

于 2017-11-16T11:08:30.993 回答
2

使用删除所有这些

第 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,以防您收到错误说由于子依赖项而无法删除它

于 2017-10-20T20:48:17.533 回答
1

这是一个用于删除标记(命名)图像及其容器的 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
于 2016-05-17T20:55:04.947 回答
1

如果您想自动/定期清理退出的容器并删除正在运行的容器未使用的镜像和卷,您可以下载镜像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

于 2017-06-01T11:47:50.677 回答
0

为什么没人提docker-compose!我才用了一个星期,没有它我活不下去。你所需要的只是编写一个只需要几分钟学习的 yml,然后你就可以开始了。它可以启动镜像、容器(在所谓的服务中需要这些)并让您查看日志,就像您使用 docker 本机命令一样。试试看:

docker-compose up -d
docker-compose down --rmi 'local'

在我使用 docker-compose 之前,我编写了自己的 shell 脚本,然后我必须在需要时自定义脚本,尤其是在应用程序架构发生变化时。现在我不必再这样做了,多亏了 docker-compose。

于 2020-01-02T10:05:08.523 回答
0

在我的情况下,问题是我有两个同名的图像解决方案是在名称或 id 之后添加标签

sudo docker rmi <NAME>:<TAG>

前任:

sudo docker rmi php:7.0.4-fpm
于 2019-08-25T14:04:59.890 回答
-1

列表图像:

ahanjura@ubuntu:~$ sudo docker images

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

删除图像:

ahanjura@ubuntu:~$ sudo docker rmi 88282f8eda00

Deleted: sha256:88282f8eda0036f85b5652c44d158308c6f86895ef1345dfa788318e6ba31194 Deleted: sha256:4f211a991fb392cd794bc9ad8833149cd9400c5955958c4017b1e2dc415e25e9 Deleted: sha256:8cc6917ac7f0dcb74969ae7958fe80b4a4ea7b3223fc888dfe1aef42f43df6f8 Deleted: sha256:b74a8932cff5e61c3fd2cc39de3c0989bdfd5c2e5f72b8f99f2807595f8ece43

ahanjura@ubuntu:~$ sudo docker rmi 13e5d3d682f4

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

强制删除:

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

Deleted: sha256:13e5d3d682f4de973780b35a3393c46eb314ef3db45d3ae83baf2dd9d702747e Deleted: sha256:3ad9381c7041c03768ccd855ec86caa6bc0244223f10b0465c4898bdb21dc378 Deleted: sha256:5ccb917bce7bc8d3748eccf677d7b60dd101ed3e7fd2aedebd521735276606af Deleted: sha256:18356d19b91f0abcc04496729c9a4c49e695dbfe3f0bb1c595f30a7d4d264ebf

于 2017-12-20T06:57:00.660 回答
-1

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

> 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
于 2017-08-16T08:41:39.220 回答