一千萬個為什麽

搜索

當碼頭圖像大小超過特定閾值時如何讓構建失敗?



docker images returns:

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

嘗試</強>

docker images | awk '{print $6}' returns:

SIZE
ago
hour
ago
ago
ago

預期結果

270 so this could be used in an if statement:

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

轉載註明原文: 當碼頭圖像大小超過特定閾值時如何讓構建失敗?

一共有 1 個回答:

docker images 的輸出實際上是為人類設計的,它不是非常適合解析的。相反,大多數Docker命令都使用Go模板來支持 - format 標誌。正如你可以在 images 文檔,您只關心 .Size 值,所以您確實需要這樣做:

docker images --format "{{.Size}}"

這只是給出了這樣的輸出:

90.6 MB

如果你有多個圖像,它們將分別放在一個單獨的行上。我會假設你只會有一條線,因為它極大地簡化了後續步驟。

為了擺脫 MB ,我們可以簡單地使用 sed

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

但是,您可能不要希望為您的bash腳本提供此功能。大多數shell不支持浮點比較,所以輸入90.6就會失敗。相反,讓我們先使用 bc 截斷數字:

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

請註意,我已將 MB 替換為1除法,其中bc 中截斷。

然後您可以將其管道化為一個shell腳本。我測試了這個腳本:

VAR=$(cat)

if [ $VAR -gt "250" ]
    then
    echo "Image too large"
    exit 1
fi

然後運行:

docker images --format "{{.Size}}" | sed "s/MB/\/1/g" | bc | ./check_size.sh
# Exits with 0 (for my example)