docker inspect 查看部分数据

1. 问题描述

  1. 使用docker inspect命令可查看 docker 镜像/容器/数据卷 等的具体配置
  2. docker inspect命令格式
    docker inspect [参数] 容器名/容器ID/镜像名/镜像ID/数据卷名...
    
  3. 如果不加参数,则输出很多,难以精确查看真正关心的内容
    如果使用grep 表达式,则是暴力的将所有符合表达式的内容均显示出来,且破坏原有输出的层级结构
  4. 示例
    对容器my_rocky_ifconfig_01进行操作
    列出所有容器
    使用inspect命令,查看容器my_rocky_ifconfig_01的数据卷设置(即创建容器时的-v参数)
    不过滤直接输出
    将所有配置信息全部输出,看的眼花,要查看的参数在键值对Mounts
    查找需要的信息
    查找不便
    若使用grep指令,且不使用正则表达式时,情况如下
    grep 指令直接使用
    只显示一行
    问题:如何精确的查看Mounts下的配置而不输出其他内容?

2. 解决方案

  1. 使用-f参数筛选并格式化docker inspect命令的输出
    docker inspect -f="格式化表达式" 容器/镜像/存储卷... 
    
    1. -f参数筛选并格式化docker inspect的输出

      这里的格式化表达式是go模板 (go template):官方参考 参考2

      1. 查看Mounts中包含的配置信息

        # 对容器 my_rocky_ifconfig_01 进行操作
        docker inspect -f="{{.Mounts}}" my_rocky_ifconfig_01"
        

        输出结果:
        筛选输出结果
        输出足够精确但格式比较混乱。
        表达式中添加json以输出 json 格式方便后续处理

        # 对容器 my_rocky_ifconfig_01 进行操作
        docker inspect -f="{{json .Mounts}}" my_rocky_ifconfig_01"
        

        输出结果:
        筛选json格式输出

      2. 查看HostConfigBinds中的配置信息

        # 对容器 my_rocky_ifconfig_01 进行操作
        docker inspect -f="{{.HostConfig.Binds}}" my_rocky_ifconfig_01"
        

        输出结果:
        子项目筛选直接输出
        表达式中添加json以输出 json 格式方便后续处理

        # 对容器 my_rocky_ifconfig_01 进行操作
        docker inspect -f="{{json .HostConfig.Binds}}" my_rocky_ifconfig_01"
        

        输出结果: 子项目筛选后json格式输出

    2. 使用jq软件包将命令的输出美化并输出
      上边已经可筛选并输出json格式的内容,接下来要将上边输出的内容进行格式化。
      而软件包jq正好可对 json 格式文本进行格式化。

      1. 安装jq软件包
        # 演示系统是 centos 7,使用 yum 管理工具
        sudo yum install -y jq
        
      2. 使用jq对前边的输出进行格式化
        docker inspect语句XXX | jq
        1. 查看Mounts中包含的配置信息

          # 对容器 my_rocky_ifconfig_01 进行操作
          # docker inspect 语句输出格式为 json,以便 jq 进行格式化
          docker inspect -f="{{json .Mounts}}" my_rocky_ifconfig_01" | jq
          

          输出结果:与之前参看结果相同,且没有其他冗余项目的输出
          jq处理筛选并以json输出的结果1

        2. 查看HostConfigBinds中的配置信息

          # 对容器 my_rocky_ifconfig_01 进行操作
          # docker inspect 语句输出格式为 json,以便 jq 进行格式化
          docker inspect -f="{{json .HostConfig.Binds}}" my_rocky_ifconfig_01 | jq"
          

          输出结果:
          jq处理筛选并以json输出的结果2

  2. grep指令配合正则表达式
    docker inspect 容器/镜像/存储卷... | grep -e 正则表达式
    
    (略)
  3. docker inspect指令的完整输出结果保存到文件中,再用其他文本编辑器或指令来查看
    1. 保存输出完整输出结果
      # 将 完整输出结果 保存到 /home/inspect_res.txt 中
      # 使用 输出重定向 > 直接覆盖
      # 对容器 my_rocky_ifconfig_01 进行操作
      docker inspect my_rocky_ifconfig_01 > /home/inspect_res.txt
      
    2. 使用其他文本编辑软件/文本查看指令进行查看
      如使用cat配合more指令,或catless指令
      • 输入/,再输入要搜索的关键词,再按回车进行搜索
      • 按大写N搜索上一个,按小写n搜索下一个
      • less中,按q退出;在more中,浏览到文件末尾自动退出
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值