gpt4 book ai didi

docker - 获取运行给定镜像版本的容器

转载 作者:行者123 更新时间:2023-12-02 08:05:25 27 4
gpt4 key购买 nike

我需要管理服务器的 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,这不再是必要的,因为没有任何东西基于它运行。

使用命令行工具解析它有点糟糕,并且 ps--filter 方法似乎无法让我根据图像名称进行搜索。我无法输出更机器可读的列表,因此我可以使用脚本或其他内容来解析内容以删除旧图像。

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

最佳答案

There's no way I can see to output a more machine-readable list so I can parse things with a script or something to delete old images.

docker ps 和 docker 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)

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

关于docker - 获取运行给定镜像版本的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com