我需要管理我的服务器的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
Run Code Online (Sandbox Code Playgroud)
我还可以使用以下内容获取本地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
Run Code Online (Sandbox Code Playgroud)
基于以上信息,我可以断定,我可以rmi的ubuntu:12.04.5,这不再需要为任何基于其上运行.
使用命令行工具解析这种--filter方法ps很糟糕,而且这种方法似乎无法让我根据图像名称进行搜索.我无法看到输出更易于机器读取的列表,因此我可以使用脚本或其他东西来解析旧图像.
Docker是否有办法在填充磁盘之前清理旧的未使用的映像?这似乎是谁自动化发布组织的一个大问题,所以我假设有是在事实上管理这个的一种方式.我在Ubuntu 14.04主机上使用最新的Docker 1.6.
我无法看到输出更易于机器读取的列表,因此我可以使用脚本或其他东西来解析旧图像.
双方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)
Run Code Online (Sandbox Code Playgroud)
它输出所有未使用图像的哈希值.
| 归档时间: |
|
| 查看次数: |
2180 次 |
| 最近记录: |