AWS ECR(Elastic Container Repository)を使ってみます。
Amazon Elastic Container Registry
ECRは、Dockerコンテナイメージを保存するレジストリサービスで、DockerHub の AWS版のような感じです。
AWS ECS 、AWS fargate と併用してコンテナを用いたサーバを運用します。
2020/3時点で、以下の枠で無料のようです
Amazon Elastic Container Registry の料金
マネジメントコンソールもしくは、AWS Client でリポジトリを作成します。
使用方法にアクセス
リポジトリ名を入力、プッシュ時にスキャンを有効にして、リポジトリを作成
リポジトリが作成される
aws コマンドでも、ECR リポジトリを作成できます。
$ aws ecr create-repository --repository-name php
AWS Client を利用して ECRのプロファイルを作成します。
リージョンは東京(ap-northeast-1)としています。
$ aws configure --profile ecr
AWS Access Key ID [None]: AIM アカウント ID
AWS Secret Access Key [None]: AIM シークレットキー
Default region name [None]: ap-northeast-1
Default output format [None]:
AWS ECR のリージョン(東京)を環境変数に設定(.bash_profile)します。
$ vi .bash_profile
export AWS_REGION=ap-northeast-1
$ source .bash_profile
$ echo $AWS_REGION
ap-northeast-1
FROM amazonlinux:2
SHELL ["/bin/bash", "-c"]
ARG PROJECT_DIR="projects"
WORKDIR $PROJECT_DIR
CMD ["/bin/bash"]
$ aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin xxxxxx
$ docker build -t linux2 .
$ docker tag linux2:latest 517704528142.dkr.ecr.ap-northeast-1.amazonaws.com/linux2:latest
$ docker push xxxx.amazonaws.com/linux2:latest
イメージが作成されたのを確認
$ aws ecr describe-repositories --region ${AWS_REGION}
{
"repository": {
"registryId": "xxxxxxxxxxxx",
"repositoryName": "linux2",
"repositoryArn": "arn:aws:ecr:ap-northeast-1:xxxxxxxxxxxx:repository/linux2",
"createdAt": 1585197107.0,
"imageTagMutability": "MUTABLE",
"imageScanningConfiguration": {
"scanOnPush": true
}
}
}
$ aws ecr describe-repositories --query 'repositories[].repositoryName'
$ aws ecr list-images --repository-name linux2
--region=${AWS_REGION}
$ aws ecr batch-delete-image --repository-name linux2 --image-ids imageTag=v2.0