ToC
Docker Repositoryが急に必要になる
事情があり、Docker HubからImageを取得するという処理を Amazon ECR
に変更することに
なりました。これまで匿名ユーザーで取得していた各種のImage取得の処理なのですが、事前の処理として
Amazon ECR
へのログインが必要になりました。。
スクリプト上で、 記載ができる場合には、その直前にログイン処理を記載することができます。
aws ecr get-login-password --region us-west-2 | \
docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-west-2.amazonaws.com
こうした場合にはあまり問題にはならないのですが、実際にはGitLab CI
の Runner
を
使っていたりもするので、処理の前に自動ログインができる方法を調べてみました。
Amazon ECR Docker Credential Helper
結論から言うと、これで解決しました。
ヘルパーをインストールして、設定ファイルをちょこっと設定するだけで自動でログインできるようになります。
(当然ながら、AWSの Credential
情報の設定は行ってください)
$ brew install docker-credential-helper-ecr
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 3 taps (homebrew/cask-versions, homebrew/core and homebrew/cask).
[省略]
Possible conflicting files are:
/usr/local/bin/docker-credential-ecr-login -> /Applications/Docker.app/Contents/Resources/bin/docker-credential-ecr-login
==> Summary
🍺 /usr/local/Cellar/docker-credential-helper-ecr/0.4.0: 7 files, 10.7MB
~/.docker/config.json
{
"credsStore": "ecr-login",
"stackOrchestrator" : "swarm",
"HttpHeaders" : {
"User-Agent" : "Docker-Client/19.03.12 (darwin)"
},
"experimental" : "disabled",
"auths" : {
"123456789012.dkr.ecr.us-west-2.amazonaws.com" : {
}
}
}
インストール後には、特にログインコマンドを実行することなく
Amazon ECRのリポジトリから docker image pull
が実行できるようになります。
おかげさまで、Imageの名前だけを変更するだけで対応できそうです。
そうしているうちに….
Re:Invent 2020 で、ECRのパブリックレジストリが公開されました。
これならログインもいらないので、 AmazonLinux
Jenkins
Gitlab Runner
とかで
あれば、そのまま使えるんじゃないか… と思った次第です。