Amazon でのライフサイクルを通じたイメージの移動 ECR - Amazon ECR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon でのライフサイクルを通じたイメージの移動 ECR

Amazon ECRを初めて使用する場合は、Docker CLIと で次の手順を使用して、サンプルイメージ AWS CLI を作成し、デフォルトのレジストリで認証し、プライベートリポジトリを作成します。次に、 にイメージをプッシュし、プライベートリポジトリからイメージをプルします。サンプルイメージを使い終わったら、サンプルイメージとリポジトリを削除します。

AWS Management Console の代わりに を使用するには、 AWS CLI「」を参照してくださいイメージを保存する Amazon ECR プライベートリポジトリの作成

さまざまな 、IDEツールキット、Windows PowerShell コマンドラインツールなど AWS SDKs、 AWS リソースの管理に使用できるその他のツールの詳細については、http://aws.amazon.com/tools/ を参照してください。

前提条件

最新の AWS CLI と Docker がインストールされておらず、使用できる状態でない場合は、次のステップに従ってこれらのツールの両方をインストールします。

のインストール AWS CLI

Amazon AWS CLI で を使用するにはECR、 AWS CLI 最新バージョンをインストールします。詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interfaceのインストール」を参照してください。

Docker をインストールする

Docker は、Ubuntu のような最新の Linux ディストリビューションから macOS や Windows まで、さまざまなオペレーティングシステムで使用できます。特定のオペレーティングシステムに Docker をインストールする方法の詳細については、Docker インストールガイド を参照してください。

Docker を使用するには、ローカルの開発システムは必要ありません。Amazon をEC2既に使用している場合は、Amazon Linux 2023 インスタンスを起動し、Docker をインストールして開始できます。

Docker をインストール済みの場合は、この手順をスキップして「ステップ 1: Docker イメージを作成する」に進んでください。

Amazon Linux 2023 を使用して Amazon EC2インスタンスに Docker をインストールするには AMI
  1. 最新の Amazon Linux 2023 でインスタンスを起動しますAMI。詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスの起動」を参照してください。

  2. インスタンスに接続します。詳細については、「Amazon ユーザーガイド」の「Linux インスタンスに接続する」を参照してください。 EC2

  3. インスタンスでインストールされているパッケージとパッケージキャッシュを更新します。

    sudo yum update -y
  4. 最新の Docker Community Edition パッケージをインストールします。

    sudo yum install docker
  5. Docker サービスを開始します。

    sudo service docker start
  6. ec2-userdocker グループに追加すると、sudo を使用せずに Docker コマンドを実行できます。

    sudo usermod -a -G docker ec2-user
  7. ログアウトし、再びログインして、新しい docker グループアクセス権限を取得します。これを行うには、現在のSSHターミナルウィンドウを閉じて、新しいターミナルウィンドウでインスタンスに再接続します。新しいSSHセッションには、適切なdockerグループアクセス許可が付与されます。

  8. ec2-usersudo を使用せずに Docker コマンドを実行できることを確認します。

    docker info
    注記

    場合によっては、Docker デーモンにアクセスするための ec2-user に対するアクセス権限を提供するため、インスタンスを再起動する必要があります。次のエラーが表示された場合は、インスタンスを再起動してください。

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?

ステップ 1: Docker イメージを作成する

このステップでは、シンプルなウェブアプリケーションの Docker イメージを作成し、ローカルシステムまたは Amazon EC2インスタンスでテストします。

シンプルなウェブアプリケーションの Docker イメージを作成するには
  1. Dockerfile という名前のファイルを作成します。Dockerfile は、Docker イメージに使用する基本イメージと、そのイメージにインストールして実行するものを記述するマニフェストです。Dockerfile の詳細については、「Dockerfile リファレンス」を参照してください。

    touch Dockerfile
  2. 前の手順で作成した Dockerfile を編集し、以下のコンテンツを追加します。

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install dependencies RUN yum update -y && \ yum install -y httpd # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \ echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

    この Dockerfile は、Amazon ECR Public でホストされているパブリック Amazon Linux 2 イメージを使用します。RUN の手順により、パッケージキャッシュが更新され、ウェブ サーバー用のいくつかのソフトウェアがインストールされてから、「Hello World!」 のコンテンツがウェブサーバーのドキュメントルートに書き込みされます。EXPOSE の命令はコンテナ上のポート 80 を公開し、CMD の命令はウェブサーバーを起動します。

  3. Dockerfile から Docker イメージを作成します。

    注記

    Docker の一部のバージョンでは、下に示す相対パスの代わりに、次のコマンドで Dockerfile への完全パスが必要になる場合があります。

    docker build -t hello-world .
  4. コンテナイメージを一覧表示します。

    docker images --filter reference=hello-world

    出力:

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       194MB
  5. 新しく構築されたイメージを実行します。-p 80:80 オプションは、コンテナ上の公開されたポート 80 をホストシステム上のポート 80 にマッピングします。docker run の詳細については、「Docker run reference」を参照してください。

    docker run -t -i -p 80:80 hello-world
    注記

    Apache ウェブサーバーからの出力はターミナルウィンドウに表示されます。"Could not reliably determine the fully qualified domain name" メッセージは無視できます。

  6. ブラウザーを開き、Docker を実行している、コンテナのホストサーバーを参照します。

    • EC2 インスタンスを使用している場合、これはサーバーのパブリックDNS値です。これは、 を使用してインスタンスに接続するために使用するアドレスと同じですSSH。インスタンスのセキュリティグループでポート 80 上の受信トラフィックを許可していることを確認します。

    • Docker をローカルに実行している場合は、ブラウザで http://localhost/ を参照します。

    • Windows または Mac コンピュータdocker-machineで を使用している場合は、 docker-machine ip コマンドで Docker をホストしている VirtualBox VM の IP アドレスを見つけ、 を置き換えます。machine-name に、使用している Docker マシンの名前を入力します。

      docker-machine ip machine-name

    ウェブページに「Hello, World!」が確認できます。表示されます。

  7. [Ctrl + C] キーを押して、Docker コンテナを停止します。

ステップ 2: リポジトリを作成する

Amazon にプッシュするイメージができたのでECR、保持するリポジトリを作成する必要があります。この例では、hello-repository イメージを後でプッシュする、hello-world:latest と呼ばれるレポジトリを作成します。レポジトリを作成するには、次のコマンドを実行します。

aws ecr create-repository \ --repository-name hello-repository \ --region region

ステップ 3: デフォルトレジストリへの認証

をインストールして設定したら AWS CLI、デフォルトのレジストリに対して Docker CLIを認証します。これにより、dockerコマンドは Amazon でイメージをプッシュおよびプルできますECR。は、認証プロセスを簡素化するget-login-passwordコマンド AWS CLI を提供します。

を使用して Amazon ECRレジストリに対して Docker を認証するには get-login-password、 aws ecr get-login-password コマンドを実行します。認証トークンをdocker loginコマンドに渡すときは、ユーザー名AWSの値を使用して、認証する Amazon URI ECRレジストリを指定します。複数のレジストリに対して認証する場合は、レジストリごとにコマンドを繰り返す必要があります。

重要

エラーが発生した場合は、 AWS CLIの最新バージョンをインストールまたはアップグレードします。詳細については、AWS Command Line Interface ユーザーガイドの「AWS Command Line Interfaceのインストール」を参照してください。

  • get-login-password (AWS CLI)

    aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  • 取得 -ECRLoginCommand (AWS Tools for Windows PowerShell)

    (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com

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

これで、前のセクションで作成した Amazon ECRリポジトリにイメージをプッシュできます。以下の前提条件が満たされた後にイメージをプッシュdockerCLIするには、 を使用します。

  • の最小バージョンdockerは 1.7 です。

  • Amazon ECR認証トークンは で設定されていますdocker login

  • Amazon ECRリポジトリが存在し、ユーザーはリポジトリにプッシュするためのアクセス権を持っています。

これらの前提条件が満たされたら、アカウントのデフォルトレジストリで新しく作成されたレポジトリにイメージをプッシュできます。

イメージにタグを付けて Amazon にプッシュするには ECR
  1. ローカルに保存したイメージをリストし、タグを付けてプッシュするイメージを識別します。

    docker images

    出力:

    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
  2. リポジトリにプッシュするイメージにタグを付けます。

    docker tag hello-world:latest aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
  3. イメージをプッシュします。

    docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest

    出力:

    The push refers to a repository [aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository] (len: 1)
    e9ae3c220b23: Pushed
    a6785352b25c: Pushed
    0998bf8fb9e9: Pushed
    0a85502c06c9: Pushed
    latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE size: 6774

ステップ 5: Amazon からイメージをプルする ECR

イメージが Amazon ECRリポジトリにプッシュされたら、他の場所からイメージをプルできます。以下の前提条件が満たされたらdockerCLI、 を使用してイメージをプルします。

  • の最小バージョンdockerは 1.7 です。

  • Amazon ECR認証トークンは で設定されていますdocker login

  • Amazon ECRリポジトリが存在し、ユーザーはリポジトリからプルするためのアクセス権を持っています。

これらの前提条件が満たされたら、イメージをプルできます。Amazon からサンプルイメージをプルするにはECR、次のコマンドを実行します。

docker pull aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository:latest

出力:

latest: Pulling from hello-repository
0a85502c06c9: Pull complete
0998bf8fb9e9: Pull complete
a6785352b25c: Pull complete
e9ae3c220b23: Pull complete
Digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636EXAMPLE
Status: Downloaded newer image for aws_account_id.dkr.region.amazonaws.com/hello-repository:latest

ステップ 6: イメージを削除する

いずれかのリポジトリにイメージが不要になった場合は、そのイメージを削除できます。イメージを削除するには、イメージが存在するリポジトリと、イメージの imageTagまたは imageDigest値を指定します。次の例では、イメージタグ を持つhello-repositoryリポジトリ内のイメージを削除しますlatest。リポジトリからサンプルイメージを削除するには、次のコマンドを実行します。

aws ecr batch-delete-image \ --repository-name hello-repository \ --image-ids imageTag=latest \ --region region

ステップ 7: リポジトリを削除する

イメージのリポジトリ全体が不要になった場合は、リポジトリを削除できます。次の例では、 --forceフラグを使用して、イメージを含むリポジトリを削除します。イメージ (およびその中に含まれるすべてのイメージ) を含むリポジトリを削除するには、次のコマンドを実行します。

aws ecr delete-repository \ --repository-name hello-repository \ --force \ --region region