Docker - 周边 - Go Template
概述
- docker inspect -f 引出
- 希望学会后, 可以处理这个命令
问题: 这是啥
疑问
- 最开始, 我以为是 jsonpath
- 后来看 命令行的解释, 说叫 go template
- 但是我查了查东西, 发现这俩玩意又是那么的相似
结果
- 这确实是 Go Template
1. Go Template
概述
- go 语言的模板类库
作用
- 类似 jsp, velocty, thymeleaf
- 预先定义模板
- 然后在通过变量渲染
- 最终得出所谓的 动态页面
- 但是这里, 貌似成为了一个 json 属性获取器
- 而且还是不那么好用的那种
- 类似 jsp, velocty, thymeleaf
2. docker inspect
概述
- -f 参数, 支持 go template
作用
- 以 整个 json 为 根元素
- 通过特定的语法, 获取特定位置的值
- 以 整个 json 为 根元素
问题
- 也不算是问题, 但是这样显示, 确实需要适应
查询的结果
- 值
- 显示单个值
- 数组
- 返回数组
- 中间以 ' ' 分割
- 字典/map
- 只返回 value
- 中间以 ' ' 分割
- 混合
- 同样只返回 value
- 中间以 ' ' 分割
- 嵌套
- 还是只返回 value
- 中间以 ' ' 分割
- 值
我不太喜欢这种方式
- 没有 ', ' 分割
- map 没有 key
- 但是不代表, 这个不合理
- 或者说
- 这个作为 模板类库, 是合理的
- 但是作为信息检索的工具, 有点不太合适
这个
- 熟练就好了
- 可以想办法克服
- 后面有 json 函数
- 也不算是问题, 但是这样显示, 确实需要适应
3. 定位元素
上下文
概述
- json 结果的 根元素
格式
{{.}}
{{$.}}
字段
概述
- 提取结果里, 某个字段的值
格式
# 单个值
> docker image inspect -f '{{.Id}}' ubuntu
sha256:7698f282e5242af2b9d2291458d4e425c75b25b0008c1e058d66b717b4c06fa9
# 返回 字典属性
# map 没有被正确还原
> docker image inspect -f '{{.RootFS}}' ubuntu
{layers [sha256:02571d034293cb241c078d7ecbf7a84b83a5df2508f11a91de26ec38eb6122f1 sha256:270f934787edf0135132b6780cead0f12ca11690c5d6a5d395e44d290912100a sha256:8d267010480fed7e616b9b7861854042aad4ef5e55f8771f2c738061640d2cb0] }
层级
概述
- 可以取到 json 的深层
格式
> docker image inspect -f '{{.RootFS.Type}}' ubuntu
layers
index
概述
- 可以取到 json 中数组的 index
格式
> docker image inspect -f '{{index .RootFS.Layers 0}}' ubuntu
sha256:02571d034293cb241c078d7ecbf7a84b83a5df2508f11a91de26ec38eb6122f1o
# 其实也可以直接取 元素
# 字符串要加 引号
> docker image inspect -f '{{index .RootFS "Type"}}' ubuntu
layers
4. 布尔函数
eq
概述
- 比较两个元素是否相等
- 元素类型要相等
格式
# 当然也可以比较 根元素下面的值
> docker image inspect -f '{{eq 1 1}}' ubuntu
true
ne
概述
- 比较两个元素是否不等
- 元素类型要相等
格式
# 当然也可以比较 根元素下面的值
> docker image inspect -f '{{ne 2 1}}' ubuntu
true
```
lt
概述
- 比较两个元素 a 和 b, a < b 是否成立
- 元素类型要相等
格式
# 当然也可以比较 根元素下面的值
> docker image inspect -f '{{lt 1 2}}' ubuntu
true
le
概述
- 比较两个元素 a 和 b, a <= b 是否成立
- 元素类型要相等
格式
# 当然也可以比较 根元素下面的值
> docker image inspect -f '{{le 1 1}}' ubuntu
true
gt
概述
- 比较两个元素 a 和 b, a > b 是否成立
- 元素类型要相等
格式
# 当然也可以比较 根元素下面的值
> docker image inspect -f '{{gt 2 1}}' ubuntu
true
ge
概述
- 比较两个元素 a 和 b, a >= b 是否成立
- 元素类型要相等
格式
# 当然也可以比较 根元素下面的值
> docker image inspect -f '{{ge 1 1}}' ubuntu
true
5. 打印函数
print
- 略
- go 的 print 函数, 我现在还没学, 学会了再补
- 略
printf
- 略
- go 的 print 函数, 我现在还没学, 学会了再补
- 略
println
- 略
- go 的 print 函数, 我现在还没学, 学会了再补
- 略
urlquery
- 略
- 这个真不会
- 略
json
概述
- 按 json 的格式, 展示 key 的 value
格式
> docker image inspect -f '{{json .RootFS}}' ubuntu
{"Type":"layers","Layers":["sha256:02571d034293cb241c078d7ecbf7a84b83a5df2508f11a91de26ec38eb6122f1","sha256:270f934787edf0135132b6780cead0f12ca11690c5d6a5d395e44d290912100a","sha256:8d267010480fed7e616b9b7861854042aad4ef5e55f8771f2c738061640d2cb0"]}
注意
- 这个命令只能处理 {} 元素
len
概述
- 返回内容的长度
- 内容是 集合 时, 返回 集合长度
- 内容是 字符串 时, 返回 字符串长度
- 内容是 数字 时, 返回 字数字长度
- 返回内容的长度
格式
> docker image inspect -f '{{len .RootFS}}' ubuntu
2
> docker image inspect -f '{{len .RootFS.Type}}' ubuntu
6
6. 逻辑函数
and
概述
- 做 逻辑与
格式
> docker image inspect -f '{{and true true}}' ubuntu
true
not
概述
- 做 逻辑非
格式
> docker image inspect -f '{{and true true}}' ubuntu
true
or
概述
- 返回内容的长度
格式
> docker image inspect -f '{{and true true}}' ubuntu
true
7. 结构
if
- 略
range
- 略
with
- 略
8. 打印
概述
- 其实这个 {{}} 可以配合其他内容来打印
格式
# 配合 print 可以打印出各种效果
> docker image inspect -f '你好 {{len .Size}}' ubuntu
你好 8
ps
ref
-
- 讲得还行
- 起码是有例子, 有细节
- 基础讲得还行
- 讲得还行
-
- 函数讲得还行
-
- 给这个例子, 只是为了告诉你, go template 和 jsonpath 真的不是一个东西
-
- 更加正式的描述 go template
-
其他
- 结构部分 需要补上
- 打印 部分, 需要补上
用处
- 老实说, 感觉其实用处, 也没那么大...
Docker - 周边 - Go Template的更多相关文章
- Docker是什么
Docker是什么 相信我们很多人都使用多VM(Virtual Machine),也就是虚拟机,简单的来说Docker就是类是于VM的容器,但Docker要轻量得多,VM(Virtual Machin ...
- Docker学习笔记之Docker应用于服务化开发
0x00 概述 上一节里我们谈到了小型的独立项目如何使用 Docker Compose 来搭建程序的运行环境,对于由多人或多部门参与的中大型服务化架构的项目,仅由一个 Docker Compose 项 ...
- Docker学习笔记之Docker 的简历
0x00 概述 在了解虚拟化和容器技术后,我们就更容易理解 Docker 的相关知识了.在这一小节中,我将介绍关于 Docker 的出现和发展,Docker 背后的技术.同时,我们将阐述 Docker ...
- docker 实践
https://doc.yonyoucloud.com/doc/docker_practice/etcd/etcdctl.html 启动http restful API docker批量映射端口 怎么 ...
- Docker源码分析(四):Docker Daemon之NewDaemon实现
1. 前言 Docker的生态系统日趋完善,开发者群体也在日趋庞大,这让业界对Docker持续抱有极其乐观的态度.如今,对于广大开发者而言,使用Docker这项技术已然不是门槛,享受Docker带来的 ...
- 超简单的 Docker部署 SpringBoot项目 步骤
很久之前就用过,一直没有好好写篇博客,今天就总结一下 创建一个 SpringBoot项目 创建一个SpringBoot项目并打成jar包,结构如图 编写 Dockerfile文件 FROM java: ...
- zabbix基本监控各指标简解
监控项目及使用模板 监控http和https: Template App HTTP Service Template App HTTPS Service 监控cpu,内存,网络等: Templ ...
- salt 安装kubernetes集群3节点
[root@linux-node1 k8s]# tree .├── etcd.sls├── files│ ├── cfssl-1.2│ │ ├── cfssl-certinfo_linux ...
- docker-install-v0.1-alpha
Written by Zak Zhu docker-install-v0.1-alpha/ ├── inventory ├── roles │ └── docker │ ├── defaults │
随机推荐
- Appium学习1-安装
Appium简介 Appium 是一个开源的.跨平台的测试框架,可以用来测试 Native App.混合应用.移动 Web 应用(H5 应用)等,也是当下互联网企业实现移动自动化测试的重要工具.App ...
- 二维数组填充datagridview
public void TwoDArrayShowINDatagridview(string[,] arr) { DataTable dt = new DataTable(); for (int co ...
- linux - mysql 异常:/usr/bin/which: no mysql in
问题描述 运行:which mysql 报错:/usr/bin/which: no mysql in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local ...
- StackExchange.Redis 之 SortedSet 类型示例
1,增加操作 RedisCacheHelper.Instance.ZSortadd(); RedisCacheHelper.Instance.ZSortadd(); RedisCacheHelper. ...
- Python警告:InsecureRequestWarning、InsecurePlatformWarning、SNIMissingWarning
SSL警告 urllib3将基于证书验证支持的级别发出几种不同的警告.这些警告表示特定情况,可以通过不同方式解决. InsecureRequestWarning 当在未启用证书验证的情况下对HTTPS ...
- 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(3)-- 命令
3 命令 Fabrics命令用于创建队列和初始化controller.Fabrics命令的Opcode字段填写0x7F.无论controller是否处于使能状态(CC.EN)Fabrics命令都会被处 ...
- csrf跨站点请求伪造
什么是csrf(跨站请求伪造) 伪造请求的定义有很多种,我将不是用户本意发出的请求统称为伪造请求(在用户不知情的情况下执行某些操作)xss的通过用户对浏览器的信任造成的,csrf是通过服务器对浏览器的 ...
- 基于.NET Core winform的录音、字幕软件HTWCore的技术总结
HTWCore是一款基于.NET Core的winform客户端程序,可以用来处理各种会议,记录,讲座,讲课等等来源的音视频,运用语音识别.视频内容提取等技术整理成word文档.项目中运用了以下技术: ...
- 根下var目录迁移
问题 var目录挂载在根目录下,占用/分区的空间,如果/var/log日志空间过大,将导致/分区空间满,导致系统无法使用. 解决方案 在硬盘上划分单独的分区,挂载到/var目录,并迁移/var目录下的 ...
- istio部署-istio prometheus
参考 fleeto/sleep fleeto/flaskapp 1. 使用 Prometheus 1.1 访问 Prometheus 1.1.1 端口转发 Prometheus 服务默认启用. # o ...