一千萬個為什麽

搜索

用於多個版本的Docker標記,用於一個Dockerfile中的一系列Docker鏡像



感謝Docker 多階段構建,我們可以編譯一些文物在一個環境中並將它們放在另一個環境中執行。

結果,有兩個圖像,其中對應於最後一個階段的最終版本和提供的標簽被標記為已定義;中間(一)沒有標簽,但它們也保留在那裏。

問題:是否可以使用一個Dockerfile的多階段構建為所有已定義的階段創建一系列標記圖像?

轉載註明原文: 用於多個版本的Docker標記,用於一個Dockerfile中的一系列Docker鏡像

一共有 1 個回答:

您可以構建和標記多階段構建的任何階段。只需使用 - target 選項 docker build 。例如。

docker build --target jdk -t myapp-jdk:v1 .
docker build --target jre -t myapp:v1 .

使用層緩存,前面的步驟將從緩存中重用,而不是每次都從頭開始重新運行,因此將構建多次運行到不同的目標幾乎沒有什麽缺點。

如果您絕對需要從單個構建命令運行此命令,則可以解析構建的輸出,獲取中間步驟的圖像ID,並標記該圖像ID:

docker tag  myapp-jdk:v1