获取运行给定映像版本的容器
我需要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
根据以上信息,我可以得出结论,我可以rmi
的ubuntu:12.04.5
,这是不再有必要的,因为没有什么是基于它运行。
用命令行工具parsing这个很糟糕, ps
的--filter
方法似乎不能使我根据图像名称进行search。 我无法看到输出更机器可读的列表,所以我可以用脚本parsing东西或删除旧图像。
有没有一种方式提供的Docker清理旧的未使用的图像,然后填充磁盘? 对于自动化发布的组织而言,这似乎是一个大问题,所以我假设实际上有一种pipe理这种方式的方法。 我在Ubuntu 14.04主机上使用最新的Docker 1.6。
我无法看到输出更机器可读的列表,所以我可以用脚本parsing东西或删除旧图像。
docker ps
和docker 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)
它为所有未使用的图像输出哈希值。