1. ホーム
  2. docker

[解決済み】Dockerエラー:無効な参照形式:リポジトリ名は小文字でなければならない

2022-01-21 21:40:21

質問

私のプロジェクトでこのようなDockerエラーに遭遇しました。

invalid reference format: repository name must be lowercase

この一般的なメッセージには、さまざまな原因があるのでしょうか?

私は努力の末にすでにそれを理解しました。ウェブ検索をしても解決策がすぐに出てこないのと、このエラーメッセージはDockerが遭遇する直接的な問題を説明しているわけではないので、ここに記録するために私自身の質問に答えることにします。

解決方法は?

dockerにおけるquot;reference"とは、イメージへのポインタのことです。イメージ名、イメージID、レジストリサーバを名前に含む、sha256タグでイメージを固定するなど、実行したいイメージを指し示すものであれば何でもかまいません。

invalid reference format のエラーメッセージは、指定された文字列を docker がイメージに変換できないことを意味します。これは、名前が無効であるか、あるいは docker run コマンドラインでイメージを実行している場合は、そのようになります。

名前自体が無効な場合は repository name must be lowercase は、レジストリやリポジトリの名前に大文字を使っていることを意味します。 YourImageName:latestyourimagename:latest .

を使用すると docker run コマンドラインで、パラメータを空白で引用しなかったり、引数の値を見落としたり、コマンドラインの順番を間違えたりした結果、このようなことがよく起こります。コマンドラインの順番は

docker ${args_to_docker} run ${args_to_run} image_ref ${cmd_to_exec}

runにargsを渡す際に最も多いエラーは、パス名にスペースを含むボリュームマッピングを展開し、パスを引用するかスペースをエスケープしないことです。例

docker run -v $(pwd):/data image_ref

ここで、もしあなたがディレクトリ /home/user/Some Project Dir を定義すると、匿名ボリューム /home/user/Some をコンテナ内で実行し Project:latest というコマンドで Dir:/data image_ref . そして、その修正は、引数を引用することです。

docker run -v "$(pwd):/data" image_ref

その他、クォートミスしがちな場所として、環境変数があります。

docker run -e SOME_VAR=Value With Spaces image_ref

これは、dockerがイメージを実行しようとしていると解釈します。 With:latest とコマンド Spaces image_ref . ここでも、環境パラメータを引用することで修正します。

docker run -e "SOME_VAR=Value With Spaces" image_ref

合成ファイルでは、画像名で変数を展開すると、その変数が正しく展開されないことがあります。そこで、もし

version: 2
services:
  app:
    image: ${your_image_name}

その後、ダブルチェックで your_image_name はすべて小文字の文字列に定義されています。