https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/LifecyclePolicies.html
ライフサイクルポリシーを作成すると、影響を受けるイメージが 24 時間以内に有効期限切れになります。
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 1.2 jqインストール
sudo yum -y install jq
-- 1.3 Dockerインストール
sudo yum update -y
sudo amazon-linux-extras install docker
sudo service docker start
sudo usermod -a -G docker ec2-user
別端末を起動
docker info
-- 2. Docker イメージを作成する
vim Dockerfile
FROM ubuntu:18.04
# Install dependencies
RUN apt-get update && \
apt-get -y install apache2
# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html
# Configure apache
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \
echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \
chmod 755 /root/run_apache.sh
EXPOSE 80
CMD /root/run_apache.sh
docker build -t helloworld:v1 .
sed -i 's/Hello World!/Hello World!!/' Dockerfile
docker build -t helloworld:v2 .
docker images --filter reference=helloworld
-- 3. デフォルトレジストリに対して認証する
aws ecr get-login-password --region ap-northeast-1 | \
docker login --username AWS --password-stdin 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com
-- 4. レポジトリを作成する
aws ecr create-repository \
--repository-name test/repo01 \
--image-tag-mutability MUTABLE \
--image-scanning-configuration scanOnPush=false
aws ecr describe-repositories
-- 5. イメージを Amazon ECR にプッシュする
docker tag helloworld:v1 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/test/repo01:v1
docker images
docker tag helloworld:v2 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/test/repo01:v2
docker images
aws ecr list-images \
--repository-name test/repo01
docker push 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/test/repo01:v1
docker push 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/test/repo01:v2
aws ecr list-images \
--repository-name test/repo01
-- 6. ライフサイクルポリシーの作成
{
"rules": [
{
"rulePriority": 1,
"description": "Keep only one image, expire all others",
"selection": {
"tagStatus": "any",
"countType": "imageCountMoreThan",
"countNumber": 1
},
"action": {
"type": "expire"
}
}
]
}
aws ecr start-lifecycle-policy-preview \
--repository-name test/repo01 \
--lifecycle-policy-text file://policy01.json
aws ecr get-lifecycle-policy-preview \
--repository-name test/repo01
aws ecr list-images \
--repository-name test/repo01
aws ecr put-lifecycle-policy \
--repository-name test/repo01 \
--lifecycle-policy-text file://policy01.json
aws ecr get-lifecycle-policy \
--repository-name test/repo01
aws ecr list-images \
--repository-name test/repo01
今回は、しばらく待つとv1イメージが削除された
-- 7. クリーンアップ
aws ecr delete-repository \
--repository-name test/repo01 \
--force
aws ecr describe-repositories