互联网技术 / 互联网资讯 · 2024年1月7日

Docker 格式化命令与日志输出

Docker 使用 Go 模板来控制部分命令以及日志驱动的输出格式。通过合理使用格式化参数,可以让命令结果更易读,也便于在脚本或自动化场景中进一步处理。

很多 Docker CLI 命令都支持 --format 参数,其中 docker inspect 是最常见的示例之一。借助内置模板函数,可以对字段进行拼接、转换、拆分和结构化输出。

Shell 中使用 –format 的注意事项

使用 --format 时,需要根据不同的 Shell 环境选择合适的引号写法。

在 Posix Shell 中,通常可以直接使用单引号:

docker inspect --format '{{join .Args " , "}}'

在 Windows Shell(如 PowerShell)中,同样需要注意引号和参数中的双引号转义方式:

docker inspect --format '{{join .Args " , "}}'

常用格式化函数

Docker 提供了一组基础模板函数,下面是常见用法说明。

join

join 用于把字符串列表连接成一个字符串,并在元素之间加入指定分隔符。

docker inspect --format '{{join .Args " , "}}' container

table

table 用于按表格形式展示指定字段,适合列表类输出。

docker image list --format "table {{.ID}} {{.Repository}} {{.Tag}} {{.Size}}"

json

json 可以将元素编码为 JSON 字符串,便于查看结构化数据或交给其他工具处理。

docker inspect --format '{{json .Mounts}}' container

lower

lower 将字符串转换为小写。

docker inspect --format '{{lower .Name}}' container

split

split 按指定分隔符拆分字符串,并返回字符串列表。

docker inspect --format '{{split .Image ":"}}'

title

title 将字符串首字母转换为大写。

docker inspect --format '{{title .Name}}' container

upper

upper 将字符串转换为大写。

docker inspect --format '{{upper .Name}}' container

println

println 会将每个值输出到新的一行,适合遍历多个结果时使用。

docker inspect --format='{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}' container

如何查看可用字段

如果不确定某个命令可以输出哪些字段,最直接的方法是先把完整对象以 JSON 形式打印出来,再从中选择需要的字段。

docker container ls --format='{{json .}}'

这种方式有助于快速了解数据结构,从而更准确地编写自己的格式化模板。