Podman

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仕様が異なり、新しいオプションが存在しないか動作が異なる可能性があります。 ...

2026年5月28日 · ErrorLog
Podman

Podman の 401 エラー:原因と解決策401

Podmanでコンテナイメージをpullやpushしようとすると、401認証エラーが発生することがあります。このエラーはレジストリへの認証に失敗したときに出現し、適切な認証情報がないか有効期限切れの状態を示しています。 よくある原因 podman loginを実行していない Podmanでレジストリからイメージを取得するには、事前に認証を完了する必要があります。ログイン処理を行わずにpullコマンドを実行すると、認証情報がないため401エラーが発生します。特に新しい環境構築時や、別のレジストリを利用する場合に見落とされやすいです。 認証トークンの有効期限が切れている レジストリが発行した認証トークンには有効期限が設定されていることが多いです。数週間から数ヶ月経過すると、以前ログインした認証情報が無効化されてしまい、401エラーが返されます。 ~/.config/containers/auth.jsonの認証情報が古い Podmanはログイン時の認証情報を ~/.config/containers/auth.json に保存します。このファイルの内容が古い、破損している、または複数のレジストリ情報が混在していると、401エラーが発生することがあります。 解決手順 ステップ1:現在のログイン状態を確認する まず、どのレジストリに対して認証情報が保存されているか確認します。 # auth.jsonの内容を確認 cat ~/.config/containers/auth.json ファイルが存在しない場合や、対象のレジストリURLが記載されていなければ、ログインが必要です。 ステップ2:対象のレジストリに再ログインする 次のコマンドでレジストリに対してpodman loginを実行します。レジストリURLは正確に指定してください。 # Docker Hubの場合 podman login docker.io # プライベートレジストリの場合(例:プライベートGCR) podman login gcr.io # ユーザー名とパスワードを聞かれるので入力する # Username: <your-username> # Password: <your-password> ログインが成功すると、認証情報が ~/.config/containers/auth.json に保存されます。 ステップ3:auth.jsonを削除して再ログインする 上記ステップで解決しない場合、auth.jsonを完全に削除した上で再度ログインしてください。この方法で古い認証情報をクリアできます。 # auth.jsonを削除 rm ~/.config/containers/auth.json # 再度ログイン処理を実行 podman login <レジストリURL> 削除後、新しい認証情報が~/.config/containers/auth.jsonに保存されます。 ステップ4:レジストリURLが正しく指定されているか確認する pullやpushコマンドを実行する際、指定しているレジストリURLが正確か確認します。レジストリURLが異なると、別のレジストリとして認識され、認証エラーが発生します。 # 正しいレジストリURLでpullを実行 podman pull docker.io/library/ubuntu:latest # pullが成功することを確認 podman images ログイン後にpullコマンドを再度実行して、401エラーが解消されたか確認します。 ...

2026年5月28日 · ErrorLog