使用buildah
,我可以通过此调用找出生成图像的日期:
buildah images --format '{{.CreatedAt}}' my_image
--format
参数是Go模板,如described for a related command。
这将返回:
Nov 13, 2018 08:04
据我所知,这是我使用的当前时区,但尚未本地化,并且缺少时区信息。如果我像这样将输出输入到Linux的date
中:
date -d "`buildah images --format '{{.CreatedAt}}' my_container`" +%s
这给了我想要的UNIX纪元:
1542063840
但是,由于我的'{{.CreatedAt}}'
是我应该能够格式化的Go模板,因此如何直接打印出历元秒(或RFC-3339
等)而不是依靠{{1} }。
您可以猜到,我是个完全的新手,文档没有提供我可以复制粘贴的任何内容
注意:按照以下答案,增强功能请求已发布到buildah
issues db。
答案 0 :(得分:2)
不幸的是,你不走运。
传递给模板执行的参数值的类型为imageOutputParams
,在images.go
中声明:
type imageOutputParams struct {
Tag string
ID string
Name string
Digest string
CreatedAt string
Size string
}
如您所见,CreatedAt
字段的类型为string
,而不是time.Time
,因此您不能在其上调用time.Time
方法。如果没有自定义注册功能,也无法对其进行任何有用的日期/时间处理。但是,由于您只是提供模板文本,因此也无法注册自定义函数。
您传递的模板在函数outputUsingTemplate()
中执行,如下所示:
err = tmpl.Execute(os.Stdout, params)
params
是上述结构的值。
建议项目所有者添加一个新字段,将CreatedAt
时间戳记作为time.Time
值,这样您就可以使用Time.Unix()
来获得新纪元。模板将如下所示:
{{.CreatedAtTime.Unix}}