😎

AWS Cloud9でコンテナイメージを作ってAWS ECRにプッシュしてみた

2024/01/15に公開

はじめに

こんにちは!みゃっちーです。🦔

今回はコンテナイメージをECRにアップロードしてみたいと思います。

AWS ECRとは?

公式の説明は下記の通りです。

コンテナソフトウェアをどこにでも簡単に保存、共有、デプロイできる

https://aws.amazon.com/jp/ecr/

AWS Cloud9とは?

公式の説明は下記の通りです。

コードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE)

https://aws.amazon.com/jp/cloud9/

やってみた

1.ECRのリポジトリを作成する

マネジメントコンソールから「ECR」と検索し、ECRのプライベートリポジトリを作成をクリックする。

各設定項目はこのようにしました。

  • 可視性設定: private
  • リポジトリ名: docker_test_repository
  • タグのイミュータビリティ: オフ
  • イメージスキャンの設定: オフ
  • KMS 暗号化: オフ

タグのイミュータビリティ

同じタグを登録できなくなる
例:イメージAを更新してプッシュしようとしても、v1.0タグがすでに存在場合は上書きされず、v1.2などの新しいタグが必要になる。

イメージスキャンの設定

各イメージがリポジトリにプッシュされた後に自動的にスキャンが行われ、セキュリティスキャンが自動的に実行される。脆弱性やセキュリティの問題を検出に役立つ。

設定を行うとこのようにリポジトリの作成が完了します。

2.Cloud9環境を立ち上げる

マネジメントコンソールからCloud9を選択し、作成をクリック

各設定項目はこのようにしました。

  • 名前: Docker_test
  • 環境タイプ: 新しいEC2インスタンス
  • インスタンスタイプ: t2.micro
  • プラットフォーム: Amazon Linux 2023
  • タイプアウト: 30分
  • 接続方法: SSM

設定が完了し、正常に作成されたことが確認できたら「開く」をクリックします。

サンプルDockerfileの作成

環境が立ち上がったらDockerfileを作成。今回はこちらのテンプレートを使用しました

この先実行するコマンドはECR対象のECRリポジトリのこちらに記載されており、コピーで切るようになっています。

ECRのレジストリに対してDockerクライアント認証

まず初めに認証トークンを取得し、レジストリに対して Docker クライアントを認証します。

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 006226380476.dkr.ecr.us-east-1.amazonaws.com

Docker Imageの作成

次に下記のCLIを実行し、Docker imageを作成します。

docker build -t <ECR の URL>:<バージョン Tag> .

リポジトリへのプッシュ

最後にリポジトリにイメージをプッシュします。

docker push 006226380476.dkr.ecr.us-east-1.amazonaws.com/docker_test_repository:<バージョン Tag>

確認

そうすると先ほど作成したECRにコンテナイメージが追加されていることがわかります。

さいごに

思っていたより簡単にできてよかったです。
他のコンテナ関係のサービスもこの際触ってみたいと思います。

読んでいただきありがとうございました!

Discussion