問題
- genesisのDockerFileからImageをBuildしようとした際に、BaseイメージのPullに失敗していた
- エラーメッセージは次の通り
[+] Building 0.7s (2/2) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 4.38kB 0.0s
=> ERROR [internal] load metadata for docker.io/pytorch/pytorch:2.5.1-cuda12.1-cudnn9-devel 0.7s
------
> [internal] load metadata for docker.io/pytorch/pytorch:2.5.1-cuda12.1-cudnn9-devel:
------
Dockerfile:6
--------------------
4 | # Stage 1: Build LuisaRender
5 | # ===============================================================
6 | >>> FROM pytorch/pytorch:2.5.1-cuda${CUDA_VERSION}-cudnn9-devel AS builder
7 |
8 | ENV DEBIAN_FRONTEND=noninteractive
--------------------
ERROR: failed to solve: pytorch/pytorch:2.5.1-cuda12.1-cudnn9-devel: failed to resolve source metadata for docker.io/pytorch/pytorch:2.5.1-cuda12.1-cudnn9-devel: error getting credentials - err: exec: "docker-credential-ecr-login": executable file not found in $PATH, out: ``
- docker build時には上記エラーが発生していたが、docker pullコマンドから直接同じイメージをPullするとエラーが発生しなかった
原因
- .docker/config.jsのCreditialStoreの設定による影響
{
"credsStore": "ecr-login"
}
- ecr-loginはECSからイメージをPull/Pushしてくる際にログインせずに操作を実行できるようにする設定
- この設定が存在する場合、全てのdockerの通信をECRの通信として扱われるため、ECRに問い合わせて失敗していた
- docker pullするときには、上記のCreditialを使用せずにPullしている?
対応
- CreditialStoreの設定を一時的にコメントアウトする
- AWS ECRからImageをPullしたい場合もあるので、一時的にコメントアウトし対応しました
{
// "credsStore": "ecr-login",
}
- credStoreではなく、credHelperで自分のAWSのアカウント情報を設定すると解決できる方法もあったのですが、AWSのアカウントが複数ある場合の対応について考える必要があったため、ひとまず上記の対応にしました