作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,如何查看docker镜像?

在运维工作中,查看 Docker 镜像是管理容器化应用的基础操作之一。Docker 提供了多种命令和工具来查看镜像的详细信息,包括镜像列表、镜像大小、创建时间、镜像的分层结构等。以下是详细的操作方法和常用命令:

1. 查看本地镜像列表
(1)docker images

这是查看本地镜像的基本命令,用于列出所有已下载的镜像。

docker images
  • 输出示例

    REPOSITORY TAG IMAGE ID CREATED SIZE
    ubuntu 20.04 1d622ef86b88 3 weeks ago 63.2MB
    nginx latest 7f19c56d5b5b 2 weeks ago 133MB
    hello-world latest feb5d9fea6a5 5 months ago 1.84kB
  • 字段说明

    • REPOSITORY:镜像的仓库名称。
    • TAG:镜像的标签(版本)。
    • IMAGE ID:镜像的唯一标识符。
    • CREATED:镜像的创建时间。
    • SIZE:镜像的大小。
2. 查看镜像的详细信息
(1)docker inspect

该命令用于查看镜像的详细配置信息,包括镜像的分层结构、环境变量、入口点等。

docker inspect <image_name_or_id>
  • 示例

    docker inspect ubuntu:20.04
  • 输出示例(部分):

    [
    {
    "Id": "sha256:1d622ef86b884d85a3286e12506a8838780a2b5b",
    "RepoTags": [
    "ubuntu:20.04"
    ],
    "RepoDigests": [],
    "Parent": "",
    "Comment": "",
    "Created": "2023-01-15T12:34:56.789Z",
    "Container": "abc123def456",
    "ContainerConfig": {
    "Hostname": "abc123def456",
    "Domainname": "",
    "User": "",
    "AttachStdin": false,
    "AttachStdout": false,
    "AttachStderr": false,
    "Tty": false,
    "OpenStdin": false,
    "StdinOnce": false,
    "Env": [
    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    ],
    "Cmd": [
    "/bin/sh",
    "-c",
    "#(nop) CMD [\"/bin/bash\"]"
    ],
    "Image": "sha256:1d622ef86b884d85a3286e12506a8838780a2b5b",
    "Volumes": null,
    "WorkingDir": "",
    "Entrypoint": null,
    "OnBuild": null,
    "Labels": {}
    },
    "DockerVersion": "20.10.7",
    "Author": "",
    "Config": {
    "Hostname": "",
    "Domainname": "",
    "User": "",
    "AttachStdin": false,
    "AttachStdout": false,
    "AttachStderr": false,
    "Tty": false,
    "OpenStdin": false,
    "StdinOnce": false,
    "Env": [
    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    ],
    "Cmd": [
    "/bin/bash"
    ],
    "Image": "sha256:1d622ef86b884d85a3286e12506a8838780a2b5b",
    "Volumes": null,
    "WorkingDir": "",
    "Entrypoint": null,
    "OnBuild": null,
    "Labels": {}
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 63200000,
    "VirtualSize": 63200000,
    "GraphDriver": {
    "Data": {
    "MergedDir": "/var/lib/docker/overlay2/merged",
    "UpperDir": "/var/lib/docker/overlay2/upper",
    "WorkDir": "/var/lib/docker/overlay2/work"
    },
    "Name": "overlay2"
    },
    "RootFS": {
    "Type": "layers",
    "Layers": [
    "sha256:1d622ef86b884d85a3286e12506a8838780a2b5b"
    ]
    },
    "Metadata": {
    "LastTagTime": "2023-01-15T12:34:56.789Z"
    }
    }
    ]
  • 说明

    • docker inspect 输出的是 JSON 格式,包含了镜像的详细信息。

    • 可以通过管道(|)和工具(如 jq)来解析和提取特定信息。例如:

      docker inspect ubuntu:20.04 | jq '.[0].Config.Cmd'
3. 查看镜像的历史记录
(1)docker history

该命令用于查看镜像的分层历史记录,包括每一层的创建命令和大小。

docker history <image_name_or_id>
  • 示例

    docker history ubuntu:20.04
  • 输出示例

    IMAGE CREATED CREATED BY SIZE COMMENT
    1d622ef86b88 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B buildkit
    <missing> 3 weeks ago /bin/sh -c #(nop) ADD file:... in / 63.2MB buildkit
  • 说明

    • 每一行代表镜像的一个分层。
    • CREATED BY 列显示了创建该层的 Dockerfile 指令。
    • SIZE 列显示了该层的大小。
4. 查看镜像的大小和占用空间
(1)docker system df

该命令用于查看 Docker 系统的总体资源占用情况,包括镜像、容器和卷的大小。

docker system df
  • 输出示例

    TYPE TOTAL ACTIVE SIZE RECLAIMABLE
    Images 3 2 200MB 63.2MB (31%)
    Containers 5 2 120MB 80MB (66%)
    Local Volumes 2 2 100MB 0B (0%)
    Build Cache 0 0 0B 0B
  • 说明

    • TOTAL:总数量。
    • ACTIVE:当前正在使用的数量。
    • SIZE:总占用空间。
    • RECLAIMABLE:可以回收的空间。
5. 查看镜像的标签和版本
(1)docker images

通过 docker images 命令可以查看镜像的标签(TAG)和版本信息。

docker images
  • 示例

    REPOSITORY TAG IMAGE ID CREATED SIZE
    ubuntu 20.04 1d622ef86b88 3 weeks ago 63.2MB
    ubuntu latest 1d622ef86b88 3 weeks ago 63.2MB
  • 说明

    • TAG 列显示了镜像的版本或标签。
    • 同一个镜像可以有多个标签(如 20.04latest)。
6. 查看镜像的存储驱动信息
(1)docker inspect
docker inspect <image_name_or_id> | jq '.[0].RootFS.L

综上所述,通过 docker inspect 命令可以查看镜像的存储驱动信息,例如使用的存储驱动(如 overlay2)和分层结构。

posted @   黄嘉波  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
历史上的今天:
2024-02-17 在k8S中,Pod生命周期是什么?
2024-02-17 在k8S中,HPA V1 V2的区别是什么?
2024-02-17 在k8S中,Service怎么关联Pod的?
2024-02-17 在k8S中,如何使用EFK实现日志的统 一管理?
2024-02-17 在k8S中,Metric Service是什么?
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波
点击右上角即可分享
微信分享提示