我在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图像显示四(4)个基本图像和一(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

其他回答

删除所有docker容器

docker rm $(docker ps -a -q)

删除所有docker图像

docker rmi $(docker images -q)

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

删除单个图像

docker rmi image_name:version/image-id

删除所有图像

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

杀死容器并将其移除:

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

注:用停止代替压井,以实现正常停机

删除除“我的图像”之外的所有图像

使用grep删除除我的图像和ubuntu之外的所有内容

docker rmi $(docker images | grep -v 'ubuntu\|my-image' | awk {'print $3'})

或(无锥子)

docker rmi$(docker images--quiet|grep-v$(dockerimages--quiet ubuntu:my image))

首先使用以下方法列出您的所有图像:docker图像

用于删除单个图像

使用docker rmi[image name(or)image id]//这将仅删除该特定图像

用于删除所有图像

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

移除容器

删除特定容器码头工rm CONTAINER_ID CONTAINER-ID对于单个图像码头工人rm 70c0e19168cf对于多个图像码头工人rm 70c0e19168cf c2ce80b62174删除退出的容器docker ps-a-f状态=已退出移除所有容器docker ps-q-a | xargs docker rm

删除图像

docker rmi IMAGE_ID

删除特定图像对于单个图像码头工人rmi ubuntu对于多个图像阿尔班岛码头工人删除悬挂图像悬挂图像是与任何标记图像无关的层,因为Docker图像由多个图像组成。docker rmi-f$(docker images-f danging=true-q)删除所有Docker图像docker rmi-f$(docker图像-a-q)


删除卷

要列出卷,请运行docker volume ls

删除特定卷docker卷rm volume_NAME删除悬挂卷docker卷rm$(docker卷ls-f悬空=true-q)删除容器及其卷码头工rm-v CONTAINER_NAME

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