如何将Docker命令执行结果导出至CSV文件?
将Docker命令结果导出为CSV文件
以docker ps为例,这里有几种可靠的方法把命令输出转成CSV格式:
方法1:用Docker自带的--format参数(推荐)
Docker命令支持通过--format自定义输出格式,直接生成符合CSV规范的内容,避免处理复杂的表格空格分隔问题。
导出带表头的容器列表:
先写入CSV表头,再追加容器数据:
echo "CONTAINER ID,NAMES,IMAGE,STATUS,PORTS" > containers.csv docker ps --format '{{.ID}},{{.Names}},{{.Image}},{{.Status}},{{.Ports}}' >> containers.csv
处理含特殊字符的字段(如逗号)
如果容器名、镜像名等字段可能包含逗号,用双引号包裹每个字段,防止CSV解析出错:
echo "\"CONTAINER ID\",\"NAMES\",\"IMAGE\",\"STATUS\",\"PORTS\"" > containers.csv docker ps --format '"{{.ID}}","{{.Names}}","{{.Image}}","{{.Status}}","{{.Ports}}"' >> containers.csv
方法2:处理默认表格输出(不推荐,适合临时场景)
如果需要处理Docker命令默认的表格输出,可以用awk等工具分割字段,但要注意字段内可能包含空格(比如COMMAND字段),这种方式容易出错:
docker ps | awk 'BEGIN {OFS=","} NR==1 {print "CONTAINER ID", "IMAGE", "COMMAND", "CREATED", "STATUS", "PORTS", "NAMES"} NR>1 {print $1, $2, substr($0, index($0,$3), index($0,$4)-index($0,$3)-1), $4, $5, $6, substr($0, index($0,$7))}' > containers.csv
通用思路:其他Docker命令的导出
对于docker inspect、docker images等命令,同样可以用--format提取所需字段生成CSV:
比如导出容器ID和对应的IP地址:
echo "CONTAINER ID,IP ADDRESS" > container_ips.csv docker ps -q | xargs docker inspect --format '{{.Id}},{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' >> container_ips.csv
内容的提问来源于stack exchange,提问作者Lokesh Senthilkumar
相关产品推荐
相关产品推荐

