(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【OpenShift】podman/skopeoで"Failed to pull image"を解消する

スポンサーリンク

事象

Podの起動に失敗していてoc get eventを見ると「Failed to pull image」としてエラーが出ている。

$ oc get event
LAST SEEN   TYPE      REASON              OBJECT                       MESSAGE
..Normal    Scheduled           pod/hoge-69676884f8-ssfk9    Successfully assigned xx/hoge-69676884f8-ssfk9 to xx
..Normal    AddedInterface      pod/hoge-69676884f8-ssfk9    Add eth0 [10.8.0.13/23]
..Normal    Pulling             pod/hoge-69676884f8-ssfk9    Pulling image "registry.access.redhat.com/.../hoge-apb"
..Warning   Failed              pod/hoge-69676884f8-ssfk9    Failed to pull image "registry.access.redhat.com/.../hoge-apb": rpc error: code = Unknown desc = Error reading manifest 1 in registry.access.redhat.com/.../hoge-apb: name unknown: Repo not found ...
環境情報
  • OpenShift Container Platform 4

原因/解決策

上記の通り「Repo not found」となっているので取得イメージのパスが誤っている。

podman searchでイメージ名を検索し、

$ podman search hoge
INDEX        NAME                                                                     DESCRIPTION                                       STARS   OFFICIAL   AUTOMATED
redhat.com   registry.access.redhat.com/../hoge-apb                     xx...   0                  
redhat.com   registry.access.redhat.com/../hoge-92-rhel7                xx                    0                  
...         

該当するリモートイメージ名がskopeoコマンドで存在することを確認し

$ skopeo inspect docker://registry.access.redhat.com/../hoge-apb  
{
    "Name": "rregistry.access.redhat.com/../hoge-apb",
    "Digest": "sha256:xxx...
...

YAMLファイルのイメージを修正すると解消した。
以下、補足です。

補足

Podmanのsearchコマンドは以下のファイルに記載のリポジトリーから検索するのでregistriedに値が入っていない場合は注意が必要です。

cat /etc/containers/registries.conf
....
[registries.search]
registries = ['registry.access.redhat.com', 'registry.redhat.io']
...
[registries.insecure]
registries = []
...

skopeoはリモートレジストリのイメージの詳細が確認でき、尚且コマンドの利用にデーモンを必要としない(PodmanやDockerは必要)というメリットもあります。