AWS ECRにDockerイメージをプッシュしてみた

## はじめに
AWSの学びの記録です。暖かい目でみてください。

:::note info
ECRにDockerイメージをプッシュする方法 について解説していきます。
:::


## 書こうと思ったきっかけ
結論から言うと、「Fargateを使ってみたいから」です。
Fargateってなんやねん、と思った方、自分も同じです。これから勉強します。
とりあえずこの場はこちらの記事を紹介して逃げます

https://qiita.com/K5K/items/0d8dbdb39fbb0375e2bd

:::note info
この記事は、Fargateを理解して使えることをゴールとした、初めの一歩です
:::



## ECRとは？
実は、Fargateを動かすにはECSが必要で、ECSのリポジトリのことをECRと言います。
ざっくり言うと、Dockerfileしか受け付けないAWS上のgitHubです。
ECRにDockerイメージを保存しておき、
ECSがFargateの中にDokcerコンテナを起動するらしいです。

例えるなら、冷凍肉まんですかね。
冷凍肉まんを買って冷凍庫に入れる　＝　ECRにDockerイメージを保存
冷凍肉まんを電子レンジで温める　＝　Fargate（電子レンジ）の中でECSがコンテナ起動
　☑️  ECR（冷凍庫）：冷凍肉まん（Dockerイメージ）を保存
　☑️ ECS（あなた）：冷凍庫から肉まんを取り出して準備
　☑️ Fargate（電子レンジ）：冷凍肉まんを温めてすぐ食べられる状態（コンテナ起動）にする

ちょっとお腹空いてきましたね。


## ECRにDockerイメージをプッシュしてみる
下記の手順で進めます
1. ECRにリポジトリを作成する
2. Dockerファイルを作成する
3. プッシュする 

ではやっていきましょう。

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

1-1. コンソールにログインして  ECRをクリック

![スクリーンショット 2025-03-17 22.57.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/7eee93d4-56ed-4004-83e6-f04ed375ffb8.png)

1-2. 「リポジトリを作成」をクリック

![スクリーンショット 2025-03-18 0.38.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/884c21e6-b1a0-47ad-becb-19222a71504f.png)

1-3. リポジトリ名を入力して「作成」をクリック

![スクリーンショット 2025-03-18 20.00.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/36fe8195-5033-4a4c-a22a-745e5b9b4ca3.png)



![スクリーンショット 2025-03-18 20.00.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/986fe23f-412d-4b8f-92bf-c42d247b263a.png)



 1-4.作成できました 

![スクリーンショット 2025-03-18 0.39.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/2f5ef4e6-ebaf-4fb6-b1cb-8f18d9d6a4c9.png)



### 2. Dockerファイルを作成する
2-1. リポジトリをクリック

![スクリーンショット 2025-03-18 0.39.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/2f5ef4e6-ebaf-4fb6-b1cb-8f18d9d6a4c9.png)


2-2. 画面左下のCloudShellをクリック

![スクリーンショット 2025-03-18 0.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/fdd3964d-4a5e-4a32-946e-465439224c1c.png)

2-3.　Dockerfileとついでにindex.htmlを作成する
```ruby: ディレクトリ構成
/
├─ Dockerfile
└─ html
      └─ index.html
```

```ruby: Dockerfile
FROM nginx:latest
COPY ./html /usr/share/nginx/html
```

```ruby: html/index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Web App</title>
</head>
<body>
    <h1>Welcome to My Web App!!!!</h1>
</body>
</html>
```

できましたでしょうか？
![スクリーンショット 2025-03-18 0.47.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/a8e7e94c-7edd-455a-9ea2-c38a11cd6b2e.png)



### 3. プッシュする 
あとは簡単です。
プッシュコマンドを表示をクリックして、
OSに応じたタブを開いてコマンドをコピーして
CloudShellに貼り付け、実行するのを繰り返すだけです。


![スクリーンショット 2025-03-17 23.38.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/bd746466-211d-48d6-9d42-62b34a74c136.png)

イメージをプッシュできました！

![スクリーンショット 2025-03-17 23.33.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3999989/3123c085-0778-4ad1-87db-a2d95ae21ed1.png)

## おまけ
今回はCloudShellを使用しましたが、
プッシュコマンドにあるようなawsコマンドを
ターミナルなどのローカルでも使用できる方法があります。

AWSのCLI（コマンドラインインターフェース）の設定をすれば可能です。
詳しくはこちらを読んでみてね

https://qiita.com/free-honda/items/866986d98fdb2fc1a56e

## まとめ

AWS ECRにDockerイメージをプッシュしてみました。
意外と簡単だったでしょうか、それとも難しかったでしょうか。
自分はキャプチャ撮る時間と肉まんを語る時間がほぼ同じだったような...。

Fargateを使うまでの道のりは、まだこれからですね。