以前の記事では、AWSのLambdaについて紹介しました。
【ECRとは?】使い方やpush手順を画像を使って解説【AWS】
AWSのECRって何?どうやってpushするの?
今回はAWSのECRについて紹介します。
ステップは以下の通りです。
- ECRとは
- pushする手順
- 作業簡略化
- Macのトラブルシューティング
ぜひ最後までご覧いただき、参考にしていただけると幸いです。
ECRとは
ECRとはElastic Container Registryの略で、AWSが提供するDockerコンテナレジストリサービスです。ECRは、Dockerコンテナイメージの保存や管理を行うことができます。
ECRは単体で使用するというよりも、ECS(Elastic Container Service)を組み合わせてDockerで作成したウェブサイトをホスティングしたり、Lambda関数をDockerを使ってデプロイする際などに使用されます。
pushする手順
それでは実際にDockerコンテナをECRにプッシュしてみましょう。
AWS CLIが必要になるので、まだの方はインストールを完了してください。
ステップは以下の通りです。
- リポジトリの作成
- pushコマンドの確認
- ターミナルでコマンド実行
それぞれ解説します。
リポジトリの作成
まずはAWSコンソールのサービスから「Elastic Container Registry」を選んで、ページへ移動してください。
サイドバーから「リポジトリ」ページへ移動し、「リポジトリを作成」をクリックします。
特に設定は変更せずに、リポジトリ名のみ設定して下さい。今回は例として「test」とします。
リポジトリ名を設定したら、「リポジトリを作成」をクリックしてリポジトリの作成を完了してください。
pushコマンドの確認
作成が完了すると、リポジトリのページに遷移します。
その中から「プッシュコマンドを表示」をクリックして、合計4つのpushコマンドを表示します。
この後の作業で使用するのでページを開いたままにしておきましょう。
ターミナルでコマンドを実行
それではpushしていきましょう。
pushしたいDockerコンテナのルートディレクトリへ移動します。これはDockerfileやdocker-compose.yamlがあるディレクトリです。そして、ターミナルを開き、先ほどのpushコマンドを1つずつ順番に4つ実行します。
これにてpushが完了します。もう一度AWSコンソールのリポジトリページに戻り、イメージが追加されていれば成功です。
作業簡略化
ECRにプッシュする際に4つのコマンドを全て実行する必要がありますが、何度も実行するのは手間がかかるため、シェルスクリプトを使って簡単に実行できるようにしましょう。
まず、Dockerファイルのルートディレクトリ内に commands.sh というシェルファイルを作成します。
次に、以下のようにECRのプッシュコマンドを上から順番に記述します。
コマンド1
コマンド2
コマンド3
コマンド4
それでは、このシェルを実行してみましょう。
ルートディレクトリ上のターミナルで実行を行います。まずは実行するために権限を設定する必要があるので、以下のコマンドを実行します。
chmod +x commands.sh
これで権限設定が完了したので、以下のコマンドでシェルを実行します
./commands.sh
これでシェルが実行され、4つのコマンドが全て順番に実行されます。
Macのトラブルシューティング
Macの場合、ECRを扱う上でエラーが出てしまう可能性があります。これはアーキテクチャの違いによるものです。
この問題を解決するために、pushコマンドのDockerビルドコマンドを以下のように変更してください。
変更前
docker build -t <リポジトリ名> .
変更後
docker build -t <リポジトリ名> --platform linux/x86_64 .
これで問題なく扱うことができるようになります。
最後に
ここまで、AWSのECRにDockerコンテナをpushする方法について紹介しました。
次回のAWSの記事では、このECRを使ってDockerで作成したコンテナをLambdaにデプロイする方法について紹介してみようと思います。
興味のある方はぜひご覧ください。
ここまでお読みいただき、ありがとうございました。