自己紹介
Webエンジニアのインターンを始めて9カ月の大学生です。
インターンでは、プロダクトのソースコードを書いたり、
AWSを用いたシステムの構築を担当しています。
初投稿で至らない部分があるかもしれないですが、温かく見守っていただけると幸いです。
概要
ECRにローカルのコンテナイメージをアップロードする手順についてまとめました。
環境情報
mac M2
Amazon ECR
ECRとは
Amazon Elastic Container Registry (Amazon ECR)は、開発者がDockerコンテナイメージを簡単に保存、管理、デプロイできるようにする完全に管理されたサービスです。
参考: Dockerの全体像について
ECRを使う理由
アプリケーションをコンテナ化することで、開発から本番環境への移行をスムーズにし、どこでも同じ環境でアプリケーションを動かせるようにします。Amazon ECRは「コンテナ化されたアプリケーション」を管理する上で、非常に便利なサービスです。
ECRの主な使い方
- あなたのローカル環境からECRにDockerイメージをpushする
- ECRにpushされているイメージをpullする
ECRにアップロードする手順
1. ECRリポジトリの作成 (もしまだ存在しない場合)
AWS管理コンソールにログインし、ECRのダッシュボードにアクセスします。「リポジトリを作成」をクリックして、新しいリポジトリを作成します。リポジトリ名を指定し、必要に応じて他の設定を行います。
2. AWS CLIを使用してログイン
AWS CLIを設定するには、以下のコマンドを実行します。
aws configure
このコマンドを実行すると、AWSのアクセスキーID、シークレットアクセスキー、使用するAWSリージョン、出力フォーマット(例: json)を順に入力します。
・AWS Access Key ID [None]: あなたのアクセスキーID
・AWS Secret Access Key [None]: あなたのシークレットアクセスキー
・Default region name [None]: 使用するリージョンの名前(例: ap-northeast-1)
・Default output format [None]: 出力フォーマット(例: json)
参考: アクセスキーIDとシークレットアクセスキーの取得方法
次に、AWS CLIを使用してDockerをECRに認証させるには、aws ecr get-login-passwordコマンドを使ってログインパスワードを取得し、そのパスワードをDockerのdocker loginコマンドに渡します。
aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account>.dkr.ecr.<region>.amazonaws.com
このプロセスは、ECRにDockerイメージをプッシュしたり、ECRからイメージをプルしたりする前に必要となります。
・region
は、あなたのECRリポジトリが存在するAWSリージョン
・account
はあなたのAWSアカウントID
に置き換えてください。AWSアカウントIDは、AWSマネジメントコンソールの右上に表示されています。
3. イメージのビルドとタグ付け
docker buildコマンドを使用します。このコマンドは、Dockerfileが存在するディレクトリで実行することが一般的です。
docker build -t <イメージ名>:<タグ> <ディレクトリのパス>
・イメージ名
はビルドするイメージの名前
・タグ
はイメージのバージョンや環境などを示すタグ
・ディレクトリのパス
は Dockerfileが存在するディレクトリのパス
に置き換えてください。
既にビルドされたDockerイメージに新しいタグを付ける場合、docker tagコマンドを使用します。これは、特にリモートのリポジトリにプッシュする前、イメージにリポジトリのアドレスを含む完全なタグを付け直す際に利用します。
docker tag <既存のイメージ名>:<既存のタグ> <新しいイメージ名>:<新しいタグ>
・既存のイメージ名
はタグを付け直す元のイメージ名
・既存のタグ
は元のイメージのタグ
ex. ECRにプッシュするため、イメージにタグを付け直す例
docker tag my-app:v1.0 <account>.dkr.ecr.<region>.amazonaws.com/my-app:v1.0
4.イメージのプッシュ
タグ付けされたイメージをECRにプッシュします。
docker push <AWSアカウントID>.dkr.ecr.<リージョン>.amazonaws.com/<リポジトリ名>:<タグ>
これらの手順を完了することで、DockerイメージがECRにプッシュされ、ECRを使用してイメージのバージョン管理や共有が行えるようになります。
最後に
初めての投稿で至らないところはあると思いますが、読んでいただきありがとうございました。今後、学んだことを積極的にアウトプットしていきたいと思っています。