docker images返回:

REPOSITORY            TAG            IMAGE ID       CREATED             SIZE
<none>                <none>         fcc125757e66   About an hour ago   270 MB


尝试

docker images | awk '{print }'返回:

SIZE
ago
hour
ago
ago
ago


预期结果

270,因此可以在if语句中使用:

if [ VAR > 250 ] then
   echo "Image too large"
   exit 1
fi


评论

看来您已经制定了包装器脚本,而您只是在问如何获取图像的大小。正确吗?

未验证:awf -F´\ t'´{split(“”,$ 5,arr);打印arr [1]}'

#1 楼

docker images的输出确实是供人类使用的,并且不是很友好的解析。相反,大多数Docker命令都使用Go模板支持--format标志。正如您在images文档中看到的那样,您只真正关心.Size的值,因此,您确实需要这样做: br />
docker images --format "{{.Size}}"


如果有多个图像,它们将分别放在单独的行上。我假设您只用一行,因为它极大地简化了下一步。

要摆脱MB,我们可以简单地使用sed

90.6 MB


但是,您可能不希望在bash脚本中使用它。大多数shell不支持浮点比较,因此输入90.6只会失败。相反,让我们先使用bc截断数字: >
然后可以将其通过管道传递到Shell脚本中。我使用以下脚本进行了测试:

docker images --format "{{.Size}}" | sed "s/MB//g"
# => 90.6


然后运行:

docker images --format "{{.Size}}" | sed "s/MB/\/1/g" | bc
# => 90