

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon ECS 任務與映像自動清理
<a name="automated_image_cleanup"></a>

每一次任務放置在容器執行個體上時，Amazon ECS 容器代理便會檢查任務中參考的映像是否是存放庫中指定標籤的最近版本。如果沒有，預設行為可讓代理程式從個別的儲存庫提取映像。若您經常更新任務和服務中的映像，您的容器執行個體儲存體可能會很快的被不再使用且可能永遠不會再使用的 Docker 映像填滿。例如，您可以使用連續整合和連續部署 (CI/CD) 管道。

**注意**  
您可以使用 `ECS_IMAGE_PULL_BEHAVIOR` 參數自訂 Amazon ECS 代理程式映像提取行為。如需詳細資訊，請參閱[Amazon ECS 容器代理程式組態](ecs-agent-config.md)。

同樣的，屬於已停止任務的容器也會使用日誌資訊、資料磁碟區和其他成品取用容器執行個體儲存體。這些成品有助於偵錯未預期停止的容器，但其中大多數的儲存體都可在一段時間之後安全的釋放。

根據預設，Amazon ECS 容器代理會自動清除停止的任務和您容器執行個體上不再由任何任務使用的 Docker 映像。

**注意**  
自動化映像清除功能需要至少 1.13.0 版本的 Amazon ECS 容器代理程式。若要將您的代理更新到最新版本，請參閱「[更新 Amazon ECS 容器代理程式](ecs-agent-update.md)」。

以下代理組態變數可用來調整您的自動化任務和映像清除體驗。如需如何在您的容器執行個體上設定這些變數的詳細資訊，請參閱「[Amazon ECS 容器代理程式組態](ecs-agent-config.md)」。

`ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION`  
等待刪除已停止任務容器的預設時間。如果該值設定為低於 1 秒，則會略過該值。根據預設，此參數會設為 3 小時，但您可以將此期間減少至 1 秒鐘 (若您的應用程式需要的話)。  
只要有容器仍在參考該映像，映像清除處理序便無法刪除映像。待容器移除後，所有未被引用的映像都將根據映像清理組態參數，成為待清理候選對象。

`ECS_DISABLE_IMAGE_CLEANUP`  
若您將此變數設為 `true`，則系統會關閉您的容器執行個體上的自動化映像清除，並且不會自動移除任何映像。

`ECS_IMAGE_CLEANUP_INTERVAL`  
此變數指定自動化映像清除處理序檢查要刪除之映像的頻率。預設值是每 30 分鐘，但您最多可以將此期間減少至 10 分鐘，以更頻繁的移除映像。

`ECS_IMAGE_MINIMUM_CLEANUP_AGE`  
此變數可指定提取映像後，到可清除該映像之間最小的時間長度。這可防止清除才剛提取的映像。預設值為 1 小時。

`ECS_NUM_IMAGES_DELETE_PER_CYCLE`  
此變數會指定單一清除週期中可移除多少映像。預設值為 5，最小值為 1。

當 Amazon ECS 容器代理程式正在執行中，且自動化映像清除未關閉時，代理程式會檢查未被執行中或已停止的容器參考的 Docker 映像檔，檢查頻率由 `ECS_IMAGE_CLEANUP_INTERVAL` 變數決定。若有找到未使用的映像，且其時間比 `ECS_IMAGE_MINIMUM_CLEANUP_AGE` 變數指定的最小清除時間還舊，則代理最多會移除 `ECS_NUM_IMAGES_DELETE_PER_CYCLE` 變數所指定數量的映像。最近參考時間距離現在最久的映像會先遭到刪除。在移除映像後，代理會等待直到下一個間隔，並重複此程序。