0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerユーザー必見!Amazon ECRへのプッシュ手順を徹底解説

Posted at

ようこそ!この記事では、ローカルで作成した Docker イメージを Amazon Elastic Container Registry (ECR) にプッシュする手順を、細かすぎるぐらい詳細に解説します。
「Docker と ECR の連携って、まるで一見すると複雑なパズルみたいじゃない?」と感じるあなたも、この記事を読めばきっとこう叫ぶでしょう:
「おお、これは簡単すぎる!なんで最初からやらなかったんだろう!」


必要な前提条件 ~準備がすべて~

準備なしに行動するのは、冒険に出るのに地図を持たないようなもの。以下の準備を確実に行いましょう。

1. AWS CLI のインストールと設定

AWS CLI をインストールしていない?それはパスタを作るのに鍋を持っていないようなものです。こちらの公式ドキュメントを参考にインストールを完了してください。

2. Docker のインストール

Docker はこの作業の基盤となるツールです。もし未インストールなら、Docker の公式サイトへ行きましょう。インストール後、docker --version で確認してみてください。「Docker, ready for action!」と聞こえる気がするはず。

3. AWS SSO (Single Sign-On) の設定

AWS SSO プロファイルが正しく設定されている必要があります。まだ設定していない場合は、AWS SSO の公式ガイドをご確認ください。

4. Amazon ECR リポジトリ

プッシュ先となるリポジトリが存在していない場合、以下のコマンドで作成します:

aws ecr create-repository --repository-name <リポジトリ名> --region <リージョン>

「リポジトリがない状態でプッシュする」のは「貯金箱がないのにお金を貯めようとする」ぐらい無意味です。


手順概要 ~スムーズな作業の流れ~

  1. AWS SSO を使って AWS にログイン
  2. Docker の認証を Amazon ECR に設定
  3. ローカルの Docker イメージに適切なタグを付与
  4. Amazon ECR に Docker イメージをプッシュ

手順詳細 ~初心者からプロフェッショナルまで~

ステップ 1: AWS SSO でログイン

AWS CLI を使用して AWS SSO にログインします。

aws sso login --profile <プロファイル名>

実行例:

aws sso login --profile sotaheavymetal21

結果:
ブラウザが自動的に開き、AWS SSO ログインページが表示されます。コードを入力して認証を完了すると以下が表示されます。

Successfully logged into Start URL: https://d-xxxxxxxx.awsapps.com/start#/

これで第一ステップが完了!ゲームのスタートボタンを押した気分ですね。


ステップ 2: Docker の認証情報を設定

Docker が Amazon ECR にアクセスできるように認証トークンを設定します。

aws ecr get-login-password --region <リージョン> --profile <プロファイル名> | docker login --username AWS --password-stdin <アカウント番号>.dkr.ecr.<リージョン>.amazonaws.com

実行例:

aws ecr get-login-password --region ap-northeast-1 --profile sotaheavymetal21 | docker login --username AWS --password-stdin 000000000000.dkr.ecr.ap-northeast-1.amazonaws.com

結果:

Login Succeeded

「ログイン成功」の文字を見た瞬間の安心感…あなたも感じましたか?


ステップ 3: Docker イメージにタグを付与

Amazon ECR リポジトリ向けにローカルイメージにタグを付与します。

docker tag <ローカルイメージ名>:<タグ> <ECRリポジトリURI>:<タグ>

実行例:

  • Django:
    docker tag sota-app:latest 000000000000.dkr.ecr.ap-northeast-1.amazonaws.com/sotaheavymetal21/django:latest
    
  • Nginx:
    docker tag sota-nginx:latest 000000000000.dkr.ecr.ap-northeast-1.amazonaws.com/sotaheavymetal21/nginx:latest
    

タグ付けの作業は「名前札を付ける」感覚。これがなければ ECR はどのイメージをどこに保存するのか混乱してしまいます。


ステップ 4: Amazon ECR にイメージをプッシュ

タグ付けしたイメージを Amazon ECR にプッシュします。

docker push <ECRリポジトリURI>:<タグ>

実行例:

  • Django:
    docker push 000000000000.dkr.ecr.ap-northeast-1.amazonaws.com/sotaheavymetal21/django:latest
    
  • Nginx:
    docker push 000000000000.dkr.ecr.ap-northeast-1.amazonaws.com/sotaheavymetal21/nginx:latest
    

成功時の出力例:

The push refers to repository [000000000000.dkr.ecr.ap-northeast-1.amazonaws.com/sotaheavymetal21/django]
latest: digest: sha256:<HASH> size: <SIZE>

これで完了!あなたのイメージは無事にクラウド上に旅立ちました。


トラブルシューティング

1. セッションが切れてしまった場合

エラー例:

The security token included in the request is invalid.

解決策: 再度以下を実行してください。

aws sso login --profile <プロファイル名>

2. リポジトリが存在しない場合

エラー例:

repository not found

解決策: リポジトリを作成します。

aws ecr create-repository --repository-name <リポジトリ名> --region <リージョン>

3. ネットワークの問題

エラー例:

CannotPullContainerError

解決策:
NAT ゲートウェイや VPC 設定を確認し、外部接続ができることを確保します。


結論

これで、ローカル Docker イメージを Amazon ECR にプッシュする方法が完璧にマスターできました。
「AWS は難しい…」と思っていた日々も、今日からおさらばです。次はデプロイ!どんどん学んでいきましょう。


参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?