新規のお客様への AWS Cloud9 の提供は終了しました。AWS Cloud9 の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら
AWS Cloud9 での Amazon ECR サービスの使用
Amazon Elastic Container Registry (Amazon ECR) サービスには、AWS Cloud9 IDE の AWS Explorer から直接アクセスできます。Amazon ECR を使用して、プログラムイメージを Amazon ECR リポジトリにプッシュできます。使用を開始するには、次のステップに従います。
-
イメージの構築に必要な情報を含む Dockerfile を作成します。
-
その Dockerfile からイメージをビルドし、処理のためにイメージにタグを付けます。
-
Amazon ECR インスタンス内にリポジトリを作成します。
-
リポジトリにタグ付けされたイメージをプッシュします。
前提条件
AWS Toolkit for AWS Cloud9 の Amazon ECR 機能を使用するには、最初にこうした前提条件を満たす必要があります。これらの前提条件は AWS Cloud9 Amazon EC2 環境の AWS Cloud9 IDE にあらかじめインストールされており、Amazon ECR にアクセスするために必要です。
1. Dockerfile の作成
Docker は Dockerfile というファイルを使用して、リモートリポジトリにプッシュおよび保存できるイメージを定義します。ECR リポジトリにイメージをアップロードする前に、Dockerfile を作成し、その Dockerfile からイメージをビルドします。
Dockerfile の作成
-
Dockerfile を保存するディレクトリに移動するには、AWS Cloud9 IDE 内の左側のナビゲーションバーにある [Toggle Tree] (ツリーの切り替え) オプションを選択します。
-
Dockerfile という名前の新しいファイルを作成します。
注記
AWS Cloud9 IDE は、ファイルタイプまたはファイル拡張子を選択するように促す場合があります。この問題が発生した場合は、プレーンテキストを選択します。AWS Cloud9IDE には「dockerfile」拡張子があります。ただし、使用することは推奨されていません。これは、拡張機能が特定のバージョンの Docker または他の関連アプリケーションと競合する可能性があるためです。
AWS Cloud9 IDE を使用した Dockerfile の編集
Dockerfile にファイル拡張子がある場合は、そのファイルのコンテキスト (右クリック) メニューを開き、ファイル拡張子を削除します。拡張子を持つ Dockerfile は、Docker の特定のバージョンやその他の関連アプリケーションと競合する可能性があります。
Dockerfile からファイル拡張子を削除したら、次の操作を行います。
-
空の Dockerfile ディレクトリを AWS Cloud9 IDE で直接開きます。
-
次の例の内容を Dockerfile にコピーします。
例 Dockerfile イメージテンプレート
FROM ubuntu:22.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh
これは Ubuntu 22.04 イメージを使用する Dockerfile です。実行命令は、パッケージキャッシュを更新します。ウェブサーバー用のいくつかのソフトウェアがインストールされてから、「Hello World!」 ウェブサーバーのドキュメントルートに書き込まれます。EXPOSE の命令はコンテナ上のポート 80 を公開し、CMD の命令はウェブサーバーを起動します。
-
Dockerfile を保存します。
2. Dockerfile からイメージをビルドする
作成した Dockerfile には、プログラムのイメージを構築するために必要な情報が含まれています。そのイメージを Amazon ECR インスタンスにプッシュする前に、まずイメージをビルドします。
Dockerfile からイメージをビルドする
-
Dockerfile を含むディレクトリに移動するには、Docker のインスタンスと統合された Docker CLI または CLI を使用します。
-
Dockerfile で定義されているイメージをビルドするには、Dockerfile と同じディレクトリから Docker ビルドコマンドを実行します。
docker build -t hello-world .
-
イメージが正しく作成されたことを検証するには、Docker イメージ コマンドを実行します。
docker images --filter reference=hello-world
出力は次のとおりです。
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
-
Ubuntu 22.04 に基づいて新しくビルドされたイメージを実行するには、echo コマンドを使用します。
注記
このステップは、イメージの作成やプッシュには必要ありません。ただし、プログラムイメージの実行時の動作を確認できます。
FROM ubuntu:22.04 CMD ["echo", "Hello from Docker in Cloud9"]
次に Dockerfile を実行して構築します。このコマンドは、Dockerfile と同じディレクトリから実行する必要があります。
docker build -t hello-world . docker run --rm hello-world
出力は次のとおりです。
Hello from Docker in Cloud9
Docker run コマンドの詳細については、Docker ウェブサイトの「Docker run reference
」を参照してください。
3. 新しいリポジトリの作成
Amazon ECR インスタンスにイメージをアップロードするには、保存できる新しいリポジトリを作成します。
新しい Amazon ECR リポジトリの作成
-
AWS Cloud9 IDE ナビゲーションバーから AWS Toolkit アイコンを選択します。
-
AWS Explorer メニューを拡張します。
-
AWS アカウントに関連付けられているデフォルトの AWS リージョンを見つけます。次に、それを選択して、AWS Cloud9 IDE を介したサービスのリストを表示します。
-
ECR オプションのコンテキスト (右クリック) メニューを開いて、新しいリポジトリの作成プロセスを開始します。次に、[Create Repository] (リポジトリの作成) を選択します。
-
プロセスを完了するには、プロンプトに従います。
-
プロセスが完了したら、AWS Explorer メニューの ECR セクションから新しいレポジトリにアクセスできます。
4. イメージのプッシュ、プル、削除
Dockerfile からイメージを構築してリポジトリを作成したら、イメージを Amazon ECR リポジトリにプッシュできます。さらに、Docker と AWS Explorer および AWS CLI を使用して、以下のことが可能です。
-
イメージをリポジトリからプルします。
-
リポジトリに保存されているイメージを削除します。
-
リポジトリを削除します。
デフォルトレジストリでの Docker の認証
Amazon ECR インスタンスと Docker インスタンス間でデータを交換するには、認証が必要です。レジストリで Docker を認証するには
-
AWS Cloud9 IDE 内でターミナルを開きます。
-
get-login-password メソッドを使用して、プライベート ECR レジストリに認証し、リージョンと AWS アカウント ID を入力します。
aws ecr get-login-password \ --region <
region
> \ | docker login \ --username AWS \ --password-stdin <aws_account_id
>.dkr.ecr.<region>.amazonaws.com重要
前述のコマンドで、
region
とAWS_account_id
を、AWS アカウントに固有の情報に置き換えます。有効なregion
の値は us-east-1 です。
イメージへのタグ付けとレポジトリへのプッシュ
AWS のインスタンスで Docker を認証したら、イメージをリポジトリにプッシュします。
-
docker images コマンドを使用して、ローカルに保存したイメージを表示し、タグ付けするイメージを特定します。
docker images
出力は次のとおりです。
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
-
Docker コマンドを使用してイメージをビルドします。
docker tag hello-world:latest
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world:latest -
リポジトリに Docker プッシュコマンドでタグ付けされたイメージをプッシュします。
重要
ローカルリポジトリの名前が AWS Amazon EC2 リポジトリと同じであることを確認してください。この例では、両方のリポジトリの名前が「
hello-world
」である必要があります。Docker によるイメージのプッシュの詳細については、「Docker イメージをプッシュする」を参照してください。docker push
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world:latest出力は次のとおりです。
The push refers to a repository [
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world] (len: 1) e9ae3c220b23: Pushed a6785352b25c: Pushed 0998bf8fb9e9: Pushed 0a85502c06c9: Pushed latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
タグ付けされたイメージがリポジトリに正常にアップロードされたら、[AWS Explorer] タブから [Refresh Explorer] (Explorer の更新) を選択して AWS Toolkit を更新します。これで AWS Cloud9 IDE の [AWS Explorer] メニューに表示されます。
Amazon ECR からのイメージのプル
-
イメージは、Docker タグコマンドのローカルインスタンスにプルできます。
docker pull
AWS_account_id
.dkr.ecr.region
.amazonaws.com/hello-world:latest出力は次のとおりです。
azonaws.com/hello-world:latest latest: Pulling from hello-world Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
Amazon ECR リポジトリからのイメージの削除
AWS Cloud9 IDE からイメージを削除する方法は 2 つあります。1 つ目の方法は、AWS Explorer を使用することです。
-
AWS Explorer から、ECR メニューを拡張します。
-
イメージを削除するリポジトリを展開します。
-
削除するイメージに関連付けられているイメージタグのコンテキストメニュー (右クリック) を開きます。
-
そのタグに関連付けられているすべての保存されたイメージを削除するには、[タグの削除...] を選択します。
AWS CLI を使用したイメージの削除
-
AWS ecr batch-delete-image コマンドを使用して、リポジトリからイメージを削除することもできます。
aws ecr batch-delete-image \ --repository-name
hello-world
\ --image-ids imageTag=latest出力は次のとおりです。
{ "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }
Amazon ECR インスタンスからのリポジトリの削除
AWS Cloud9 IDE からリポジトリを削除する方法は 2 つあります。1 つ目の方法は、AWS Explorer を使用することです。
-
AWS Explorer から、ECR メニューを拡張します。
-
削除するリポジトリのコンテキスト (右クリック) メニューを開きます。
-
[Delete Repositor...] (リポジトリを削除...) を選択します。
AWS CLI からの Amazon ECR リポジトリの削除
-
リポジトリは、AWS ecr delete-repository コマンドで削除できます。
注記
通常、まずリポジトリに含まれるイメージを削除しないと、リポジトリを削除することはできません。ただし、--force フラグを追加すると、リポジトリとそのすべてのイメージを 1 ステップで削除できます。
aws ecr delete-repository \ --repository-name
hello-world
\ --force出力は次のとおりです。
--repository-name hello-world --force { "repository": { "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", "registryId": "922327013870", "imageTagMutability": "MUTABLE", "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", "repositoryName": "hello-world", "createdAt": 1664469874.0 } }