我有三個并行的詹金斯構建。如果其中一個構建(Linux 構建)失敗,則所有其余構建(兩個 Windows 構建需要更長的時間并在一個 Windows jenkins 節點上運行)都會中斷。
如果它們在執行完成后被打斷,一切都很好,它們docker build -t mytag:myname ...會在 jenkins 的post always部分中被洗掉docker rmi mytag:myname。
但是,如果 Windows 構建未完成,則它們的影像未命名/未標記,并且在 jenkins 作業失敗后我最終將它們未洗掉。而且我擔心會耗盡 Windows jenkins 節點上的所有存盤空間。
我還必須提到,我無法prune在 Windows 節點上的 jenkins 中運行并行 docker 命令,因為我收到錯誤:Error response from daemon: a prune operation is already running,因為這些命令最終會在一個 Windows jenkins 節點上立即執行。
我唯一的想法是:每周日在 Linux/Windows jenkins 節點上進行每周 cron docker system prune -a。
我非常感謝有關如何在 Windows 節點上消除這些部分構建的影像的任何想法。
uj5u.com熱心網友回復:
要洗掉未標記/懸空的影像,您可以嘗試以下命令:
docker rmi $(docker image ls -q -f dangling=true )
快速解釋此命令應該做什么:
docker rmi- 洗掉具有這些 ID 的影像。
$(...)- 執行子命令。
docker image ls- 列出所有影像。
-q- 僅顯示影像的 ID。
-f dangling=true--f是一個過濾器,我們過濾懸空/未標記的影像
總的來說,子命令為您提供了所有未使用和未標記的影像的 ID,而主命令洗掉了所有具有相應 ID 的影像。
來源:
https ://docs.docker.com/engine/reference/commandline/image_ls/
https://docs.docker.com/engine/reference/commandline/rmi/
https://levelup.gitconnected.com/docker-洗掉-懸空-aka-none-images-8593ef60deda
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/508705.html
