ローカルにクローンしたリポジトリを Docker にマウントして実行しようとすると、「リポジトリは小文字で」エラーがでます。
$ docker run --rm -it -v $(pwd):/app golang:alpine /bin/sh docker: invalid reference format: repository name must be lowercase. See 'docker run --help'.
でも、リポジトリのディレクトリ名は小文字なんです。
「docker: invalid reference format: repository name must be lowercase」でググっても、リポジトリを別箇所に移動したり、Windows 情報ばかりだったので Linux/macOS の情報として自分のググラビリティとして。
TL; DR (今北産業)
-
理由: リポジトリの「パス」に半角スペースが含まれています
-
原因:
Docker のボリューム(ディレクトリ)のマウントは、絶対パスである必要があります。しかし、パスが相対パスだったり、スペースが入っていると、引数を展開する際に複数の引数があると判断されてしまい構文(format
)エラーになります -
対処: パスをダブルクォートして 1 つの引数として扱います。
ダブルクォートで囲う- $ docker run --rm -it -v $(pwd):/app golang:alpine /bin/sh + $ docker run --rm -it -v "$(pwd)":/app golang:alpine /bin/sh
pwd
は Linux/macOS の UNIX 系コマンドで、現在の作業ディレクトリのパスを返すコマンドです。カレント・ディレクトリの絶対パスを表示する際に使われます。
また、$(...)
は ...
を実行した結果を返すコマンドです。()
でサブシェル(別プロセス)として実行し、$
で内容を出力します。
シェルの構文であるため、bash
でも使えるコマンドなので、Windows でも WSL2 がインストールされていれば Bash on Windows
でも使える tips になります。