“docker ps”和“docker images”中的确切时间

wfauudbj  于 2023-10-16  发布在  Docker
关注(0)|答案(3)|浏览(122)

docker psdocker images以相当模糊的方式表示时间,例如“大约一小时前”或“两天前”。我怎样才能知道准确的时间呢?

jhkqcmku

jhkqcmku1#

使用docker inspect

docker inspect -f '{{ .Created }}' IMAGE_OR_CONTAINER
3duebb1j

3duebb1j2#

问题是在使用docker psdocker images时如何显示确切的时间。这可以直接通过格式参数来完成,使用CreatedAt

$ docker ps --format 'table {{.ID}}\t{{.Command}}\t{{.CreatedAt}}'
CONTAINER ID        COMMAND                  CREATED AT
86baa3a5058a        "./env.sh catalina.s…"   2019-10-30 08:30:15 -0400 EDT   
1eb21e95119d        "./env.sh catalina.s…"   2019-10-30 06:58:34 -0400 EDT   
87be4be4c328        "docker-entrypoint.s…"   2019-10-30 06:58:33 -0400 EDT   
e4ab699631c8        "./env.sh catalina.s…"   2019-10-30 06:58:32 -0400 EDT

table规范添加了头文件。法律的格式字段是有文档记录的,例如在https://docs.docker.com/engine/reference/commandline/ps/#formatting,但大多数对应于大写的列标题,因此您可以将{{.Ports}}添加到上述格式。(从引用中,您还可以看到所有字段名称,如docker ps --format='{{json .}}'
docker inspect(来自此答案https://stackoverflow.com/a/28203469/500902)可用于显示单个图像或容器的时间,使用不同的格式属性{{.Created}}并显示时间格式略有不同,没有明显的原因。

ql3eal8s

ql3eal8s3#

正如其他人所示,docker inspect的转储暴露了Created字段,使用{{.Created}}的过滤器将允许您搜索JSON数组,匹配相应的键,并隔离值输出。
针对pihole/pihole容器的示例:

$ docker inspect -f '{{.Created}}' pihole/pihole
2022-09-05T11:32:56.256782646Z

你可以在JSON playground中看到一个例子:https://jqplay.org/s/pbCt0n1Qva6
为了进一步使用它,我们可以使用其他工具,例如date将此数据重新格式化为Epoch时间戳:

$ date --date "$(docker inspect -f '{{.Created}}' pihole/pihole)" +'%s'
1662377576

从这里,你应该能够应用任何数学或替代显示的日期,适合您的需要。我们可以使用RFC 3339兼容的时间戳,如下所示:

$ date --rfc-3339 seconds --date @"1662377576"
2022-09-05 04:32:56-07:00

由于历元代表秒,除以86400(一天中有多少秒)将给予一些基本的近似值,甚至只是:

$ date -d @1662377576
Mon Sep  5 04:32:56 PDT 2022

相关问题