Amazon ECR Pull Through CacheでDocker Hub/Azure Container Registry/GitHub Container Registryがサポートされました
こんにちは。CX事業本部Delivery部のakkyです。
Amazon ECRには、パブリックなコンテナレジストリのプロキシ・キャッシュをしてくれるプルスルーキャッシュという機能がありますが、今までは上流リポジトリとしてAmazon ECR Public、Quay、Kubernetesのみがサポートされていましたが、11月17日に対象が拡大され、Docker Hub、Azure Container Registry、GitHub Container Registryがサポートされました!
今回はこのうち、Github Container Registryで動作を確認してみましたのでご紹介します。
Pull Through Cacheの設定
マネジメントコンソールからAmazon Elastic Container Registryを開き、Private registry→Pull through cacheを開きます。「ルールを追加」をクリックすると、以下の画面が開きます。
たしかに画面が新しくなって、対象サービスが増えていますね!
Github Container Registryを選択して次をクリックすると、認証キーを設定する画面となります。
キーはSecrets Managerで管理されます。
シークレットネームは任意(今回はghcr-io)とし、ユーザー名にはGithubのユーザー名、アクセストークンにはpersonal access token (classic)を入力します。
認証キーについては、Githubのドキュメントをご覧ください。
今回はread:packages権限のみ付けたキーを作成し、設定しました。
最後に、リポジトリの名前空間を指定します。
設定の確認を行えば、プルスルーキャッシュが使用できるようになります。
Pullしてみる
今回はDocker CLIがインストールされているLinux(WSL2)でコンテナをプルできるか実験してみました。
「プルコマンドを表示」で指定されてるコマンドを参考に、まず認証情報を設定します。(AWS CLIのインストールと認証情報の設定を済ませておく必要があります)
aws ecr get-login-password --region ap-northeast-1 | sudo docker login --username AWS --password-stdin XXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com
次にコンテナをPullしてみます。今回は、Github自身が提供しているsuper-linterのコンテナを使ってみましょう。
コンテナはghcr.io/github/super-linter:latestですので、ghcr.ioの部分をECRレジストリ名+プルスルーキャッシュ名前空間のXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/github/に置き換え、以下のように指定します。(今回はgithubが名前空間なので分かりづらいですが、前のgithubはプルスルーキャッシュの名前空間、後ろがコンテナの名前です。)
sudo docker pull XXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/github/github/super-linter:latest
このコマンドでコンテナをプルできました。また、ECRにもキャッシュされていることが確認できました!
以上