Vấn đề là khi thực hiện build một image mới, Amazon ECR vẫn giữ lại image cũ mà không có đánh tag
. Điều đó có nghĩa images chuyển sang non-tagged
và chúng không thực sự cần thiết. Do đó chúng ta hoàn toàn có thể xoá bỏ chúng.
Ở bài viết này mình chia sẻ các bạn một scripts để loại bỏ các images không gắn tag này trên ECR
1. Yêu cầu
Yêu cầu bạn cần có một tài khoản AWS. Bạn nào mới tìm hiểu về AWS thì có thể xem thêm thông tin tại đây Đăng kí lần đầu thì hoàn toàn miễn phí theo 3 loại bên dưới.
Tiếp đến, bạn tạo một ECR trên tài khoản AWS của mình. Trong ô tìm kiếm các bạn gõ ECR.
Tiếp theo, các bạn tạo một repository bằng cách bấm create repository
. Sau đó bắt đầu thử build một docker image và push lên repository này. Các bạn build và push nhiều lần lên repository và gắn tag duy nhất là latest. Lúc này thì chỉ tag mới nhất thì được gắn là lastest còn các tag trước đó sẽ chuyển sang non-tagged
. Đại loại như hình bên dưới
2. Xoá images không gắn tag
Để xoá xoá images không gắn tag. Các bạo một scripts như sau:
nano ecr-delete-images-untaged.sh
Thêm nội dung sau
#!/bin/bash
REPOS=$(aws ecr describe-repositories --region ap-southeast-1 --profile <kienletv> --query 'repositories[].repositoryName' --output text)
for repo in $REPOS; do
TAGS=$(aws ecr list-images --region ap-southeast-1 --profile kienle --repository-name $repo --filter tagStatus=UNTAGGED --query 'imageIds[].imageDigest' --output text)
for tag in $TAGS; do
echo "Deleting image: $tag"
aws ecr batch-delete-image --region ap-southeast-1 --profile kienle --repository-name $repo --image-ids imageDigest=$tag > /dev/null
done
done
exit
Chú ý: thay thế profile AWS đang sử dụng.
Lưu lại và thoát
Cấp quyền và thực thi
chmod +x ecr-delete-images-untaged.sh
sh ecr-delete-images-untaged.sh
Đợi kết quả
Chúc các bạn thành công!