※2021/08/10 Dockerfileでvolumeした場合も追記
Docker初心者です。コンソールはGit Bash for Windowsを使用しています。
Dockerでvolumeマウントをするときにエラーが出過ぎて困ったので、どの表記法であればエラーが出ないか自身の備忘録としてまとめます。ちなみに理由はよく分かっていません。。。
ホストPC側(自分のパソコン側)のディレクトリの階層構造や名前は適当に付けているので気にしないでください。
httpdのDockerイメージを使用しているため、Docker側のvolume場所は/usr/local/apache2/htdocs
となっています。こちらは使用するイメージによって変わってくるので(とはいえどこでもいい?この辺よく分かってないです)
エラーが出ない記述法
###絶対パス
$ docker run -v C:/User/hoge/dir:/usr/local/apache2/htdocs httpd
$ docker run -v C:\\User\\hoge\\dir:/usr/local/apache2/htdocs httpd
$ docker run -v //C/User/hoge/dir:/usr/local/apache2/htdocs httpd
$ docker run -v //C\\User\\hoge\\dir:/usr/local/apache2/htdocs httpd
- Cは大文字でも小文字でもOK。
- /(スラッシュ)は(バックスラッシュ)でも代用可能。ただし、バックスラッシュが一つだとただのエスケープと認識されるので、2回記述する必要あり。
相対パス
$ docker run -v /$(pwd):/usr/local/apache2/htdocs httpd
- pwdは大文字でも小文字でもOK
- こっちは(バックスラッシュ)はだめ
エラーの出る記述法
組み合わせは無限なので、いくつかのみ紹介します。
絶対パス
$ docker run -v /C/User/hoge/dir:/usr/local/apache2/htdocs httpd ←スラッシュ一つ
相対パス
$ docker run -v .:/usr/local/apache2/htdocs httpd
$ docker run -v /($pwd):/usr/local/apache2/htdocs httpd
$ docker run -v $(pwd):/usr/local/apache2/htdocs httpd
$ docker run -v \\$(pwd):/usr/local/apache2/htdocs httpd
$ docker run -v ${pwd}:/usr/local/apache2/htdocs httpd
$ docker run -v %cd%:/usr/local/apache2/htdocs httpd
Dockerfileからrunした場合
さっきは上手くいっていたパスではエラーが出ました。
エラーの出る記述法
$ docker build -t ex22_original /$(pwd)
$ docker build -t ex22_original /$(pwd)/
エラーの出ない記述法
$ docker build -t ex22_original $(pwd)
$ docker build -t ex22_original .
絶対パスは何度試してもダメなので、正解が分かったらまた書き足します。