获取运行给定图像版本的容器

时间:2015-05-28 20:58:32

标签: docker

我需要管理我的服务器的Docker镜像缓存,以确保我不会填满磁盘。

我想获得一个当前没有被正在运行的容器使用的所有Docker镜像的列表。我可以使用以下命令获取运行Docker容器的列表:

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
fdbe4426220a        ubuntu:latest       "/bin/bash"         5 days ago          Running                       compassionate_brown   

我还可以使用以下内容获取本地Docker镜像列表:

$ sudo docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              latest              07f8e8c5e660        3 weeks ago         188.3 MB
ubuntu              12.04.5             ac6b0eaa3203        3 weeks ago         132.5 MB

根据以上信息,我可以得出结论:rmi ubuntu:12.04.5 --filter不再需要,因为没有基于它运行。

使用命令行工具解析这一点很糟糕,ps的{​​{1}}方法似乎无法让我根据图片名称进行搜索。我无法看到输出更易读机器的列表,因此我可以使用脚本或其他东西来解析旧图像。

Docker是否有办法在填充磁盘之前清理旧的未使用的图像?对于自动发布版本的组织来说,这似乎是一个大问题,所以我假设 实际上是一种管理它的方法。我在最新的Docker 1.6上,在Ubuntu 14.04主机上。

1 个答案:

答案 0 :(得分:6)

  

我无法看到输出更易于机器读取的列表,因此我可以使用脚本或其他东西来解析旧图像。

docker psdocker images都有一个-q选项,只能输出哈希值而不是表格列表。将其与docker inspect's templates和一些常见的shell实用程序相结合,可以得到:

#!/bin/bash
comm -23 <(docker images -q --no-trunc | sort) \
         <(docker ps -aq | xargs docker inspect -f '{{.Image}}' | sort -u)

输出所有未使用图像的哈希值。