翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
VS Code での Amazon Elastic コンテナレジストリサービスの操作
Amazon Elastic Container Registry (Amazon ECR) サービスには、VS Code AWS から直接アクセスでき、それを使用してプログラムイメージを Amazon ECR リポジトリにプッシュします。開始するには、次の手順を実行する必要があります。
-
イメージの構築に必要な情報を含む Dockerfile を作成します。
-
その Dockerfile からイメージをビルドし、処理のためにイメージにタグを付けます。
-
Amazon ECR インスタンス内にリポジトリを作成します。
-
リポジトリにタグ付けされたイメージをプッシュします。
前提条件
Toolkit for VS Code の Amazon ECR サービス機能を使用するには、こうした前提条件を満たす必要があります。
1. Dockerfile の作成
Docker は Dockerfile というファイルを使用して、リモートリポジトリにプッシュおよび保存できるイメージを定義します。ECR リポジトリにイメージをアップロードする前に、Dockerfile を作成し、その Dockerfile からイメージをビルドする必要があります。
Dockerfile の作成
-
Toolkit for VS Code Explorer を使用して、Dockerfile を保存するディレクトリに移動します。
-
Dockerfile という名前の新しいファイルを作成します。
注記
VS Code は、ファイルタイプまたはファイル拡張子を選択するように促す場合があります。この問題が発生した場合は、プレーンテキストを選択します。Vs Code には「dockerfile」拡張子があります。ただし、使用することは推奨されていません。これは、拡張機能が特定のバージョンの Docker または他の関連アプリケーションと競合する可能性があるためです。
VS Code を使用して Dockerfile を編集する
Dockerfile にファイル拡張子がある場合は、そのファイルのコンテキスト (右クリック) メニューを開き、ファイル拡張子を削除します。
Dockerfile からファイル拡張子を削除したら、次の操作を行います。
-
空の Dockerfile を VS Code で直接開きます。
-
次の例の内容を Dockerfile にコピーします。
例 Dockerfile イメージテンプレート
FROM ubuntu:18.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 18.04 イメージを使用する Dockerfile です。実行命令は、パッケージキャッシュを更新します。ウェブサーバー用のいくつかのソフトウェアがインストールされてから、「Hello World!」 ウェブサーバーのドキュメントルートに書き込まれます。EXPOSE の命令はコンテナ上のポート 80 を公開し、CMD の命令はウェブサーバーを起動します。
-
Dockerfile を保存します。
重要
Dockerfile の名前に拡張子が付いていないことを確認してください。拡張子を持つ Dockerfile は、Docker の特定のバージョンやその他の関連アプリケーションと競合する可能性があります。
2. Dockerfile からイメージをビルドする
作成した Dockerfile には、プログラムのイメージを構築するために必要な情報が含まれています。そのイメージを Amazon ECR インスタンスにプッシュする前に、まずイメージをビルドする必要があります。
Dockerfile からイメージを作成する
-
Docker CLI または Docker のインスタンスと統合された CLI を使用して、Dockerfile を含むディレクトリに移動します。
-
Docker ビルドコマンドを実行して、Dockerfile で定義されているイメージをビルドします。
docker build -t hello-world .
-
docker images コマンドを実行して、イメージが正しく作成されたことを確認します。
docker images --filter reference=hello-world
例 出力例:
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest e9ffedc8c286 4 minutes ago 241MB
-
注記
この手順は、イメージの作成やプッシュには必要ありませんが、プログラムイメージの実行時の動作を確認できます。
新しいビルトイメージを実行するには、Docker 実行 コマンドを使用します。
docker run -t -i -p 80:80 hello-world
-p オプションは、前の例で指定され、コンテナ上の 80 ポート からホストシステム 80 ポート にエキスポートされます。。Docker をローカルに実行している場合は、ブラウザで http://localhost:80
を参照します。プログラムが正常に実行された場合、「Hello World!」 ステートメントが表示されます。 Docker run コマンドの詳細については、Docker ウェブサイトの「Docker run reference
」を参照してください。
3. 新規レポジトリを作成します
Amazon ECR インスタンスにイメージをアップロードするには、保存できる新しいリポジトリを作成します。
Amazon ECR リポジトリを作成します。
-
VSコードアクティビティバー から、AWS Toolkit アイコン を選択します。
-
AWS Explorer メニューを拡張します。
-
デフォルトに関連付けられているデフォルトの AWS リージョン AWS を見つけます。次に、それを選択して、VS Code の Toolkit を介したサービスのリストを表示します。
-
ECR + オプションを選択し、リポジトリの新規作成プロセスを開始します。
-
プロンプトに従ってプロセスを完了します。
-
完了したら、AWS Explorer メニューの ECR セクションから新しいレポジトリにアクセスできます。
4. イメージのプッシュ、プル、削除
Dockerfile からイメージを構築してリポジトリを作成したら、イメージを Amazon ECR リポジトリにプッシュできます。さらに、Docker と AWS Explorer および AWS CLI を使用して、以下のことが可能です。
-
イメージをリポジトリからプルします。
-
リポジトリに保存されているイメージを削除します。
-
リポジトリを削除します。
デフォルトレジストリで Docker を認証する
Amazon ECR インスタンスと Docker インスタンス間でデータを交換するには、認証が必要です。レジストリで Docker を認証するには
-
AWS CLI のインスタンスに接続されているコマンドラインオペレーティングシステムを開きます。
-
get-login-password を使用して、プライベート ECR レジストリを認証するメソッドです。
aws ecr get-login-password --region
region
| docker login --username AWS --password-stdinAWS_account_id
.dkr.ecr.region
.amazonaws.com重要
上記のコマンドでは、AWS アカウント固有の情報に
region
およびAWS_account_id
の両方を更新する必要があります。
リポジトリにプッシュするイメージにタグを付けます。
AWS のインスタンスで Docker を認証したら、イメージをリポジトリにプッシュします。
-
Docker イメージコマンドを使用して、ローカルに保存したイメージを表示し、タグ付けするイメージを特定します。
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 タグコマンドでタグ付けされたイメージをプッシュします。
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 メニューが見えます。
Amazon ECR からイメージをプルする
-
イメージは、Docker タグコマンドのローカルインスタンスにプルできます。
docker pull
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
Amazon ECR リポジトリからイメージを削除する
VS Code からイメージを削除する方法は 2 つあります。1 つ目の方法は、AWS Explorer を使用することです。
-
AWS Explorer から、ECR メニューを拡張します。
-
イメージを削除するリポジトリを展開します。
-
コンテキストメニュー (右クリック) を開いて、削除するイメージに関連付けられているイメージタグを選択します。
-
・ウmタグの削除... オプションを選択して、そのタグに関連付けられているすべての保存されたイメージを削除します。
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 インスタンスからリポジトリを削除する
VS Code からリポジトリを削除する方法は 2 つあります。1 つ目の方法は、AWS Explorer を使用することです。
-
AWS Explorer から、ECR メニューを拡張します。
-
コンテキスト (右クリック) メニューを開き、削除するリポジトリを選択します。
-
リポジトリの削除... オプションを選択して、レポジトリを選択します。
AWS CLI から Amazon ECR リポジトリを削除する
-
リポジトリは、AWS ecr delete-repository コマンドで削除できます。
注記
デフォルトでは、イメージを含むリポジトリを削除することはできません。ただし、--force フラグはこれを許可します。
AWS ecr delete-repository \ --repository-name
hello-world
\ --force例 出力例:
{ "failures": [], "imageIds": [ { "imageTag": "latest", "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b" } ] }