Podman の 400 エラー:原因と解決策400
Podman実行時に「400 Bad Request」が出ています。このエラーはPodman APIまたはレジストリへのリクエスト形式が正しくないことを示しており、コマンドオプションやイメージ指定の誤りが原因です。 よくある原因 podman runコマンドのオプション指定が誤っている podman run のオプション順序やフラグの書き方が間違っていると、Podmanはリクエストを解析できず400エラーを返します。例えば、値が必要なオプション(--name、--memory など)に値を渡さない、または重複定義した場合に発生します。イメージ指定の前に全てのオプションを配置する必要があります。 イメージ名またはタグの書き方が間違っている イメージ名やタグの形式が不正だとリクエストが成立しません。レジストリが指定されていない場合、Podmanはデフォルトレジストリから検索しますが、タグ内に無効な文字が含まれていたり、参照形式が壊れていたりするとエラーになります。 Podman APIソケットへのリクエストのJSON形式が壊れている REST APIを直接呼び出す場合、JSONペイロードの構文エラーや必須フィールドの不足があると400エラーが発生します。curlなどでAPIを叩く際にダブルクォートの閉じ忘れやカンマの欠落が原因になります。 解決手順 ステップ1:コマンドオプションの正しい書き方を確認する # 使用しているサブコマンドのヘルプを表示 podman help run # よく使うオプション例 podman run --name <コンテナ名> --memory 512m --cpus 1 <イメージ名>:<タグ> podman help run でオプション一覧と説明を確認し、オプション順序やフラグの記述が正しいか検証します。イメージ指定は必ずオプション指定の後に配置してください。 ステップ2:イメージ名とタグをpodman searchで検証する # イメージ検索でレジストリに存在するか確認 podman search alpine # タグ付きで正確なイメージ名を指定 podman run alpine:3.18 /bin/sh # レジストリを明示的に指定する場合 podman run docker.io/library/alpine:3.18 /bin/sh podman search で目的のイメージがレジストリに存在し、正確なタグ名を確認します。タグが存在しない、または大文字小文字が異なっている場合も400エラーになります。 ステップ3:Podmanをバージョン確認し、必要に応じて更新する # 現在のPodmanバージョンを確認 podman --version # 古い場合はシステムパッケージマネージャーで更新 # Red Hat系の場合 sudo dnf update podman # Debian系の場合 sudo apt update && sudo apt upgrade podman 古いバージョンではAPI仕様が異なり、新しいオプションが存在しないか動作が異なる可能性があります。 ...