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

我需要pipe理我的服务器的Docker镜像caching,以确保我没有填充磁盘。

我想要得到一个当前没有被正在运行的容器使用的所有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 

根据以上信息,我可以得出结论,我可以rmiubuntu:12.04.5 ,这是不再有必要的,因为没有什么是基于它运行。

用命令行工具parsing这个很糟糕, ps--filter方法似乎不能使我根据图像名称进行search。 我无法看到输出更机器可读的列表,所以我可以用脚本parsing东西或删除旧图像。

有没有一种方式提供的Docker清理旧的未使用的图像,然后填充磁盘? 对于自动化发布的组织而言,这似乎是一个大问题,所以我假设实际上有一种pipe理这种方式的方法。 我在Ubuntu 14.04主机上使用最新的Docker 1.6。

我无法看到输出更机器可读的列表,所以我可以用脚本parsing东西或删除旧图像。

docker psdocker images都有一个-q选项,使得它们只输出一个哈希列表而不是表格。 将这个与docker inspect的模板和一些常用的shell实用程序结合起来可以让我们:

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

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