1. ホーム
  2. ウィンドウズ

[解決済み】Windows 10のDockerでカレントディレクトリをボリュームとしてマウントする。

2022-04-06 18:51:04

質問

説明

Windows10でDocker1.12.5をHyper-V経由で使用しており、コンテナ実行ファイルをカレントパスのコマンドとして使用したいです。Dockerイメージをビルドし、正常に動作していますが、カレントパスのマウントに問題があります。考え方としては、エイリアスを作成して docker run --rm [...] コマンドを使用することで、カレントディレクトリでシステム全体として使用できるようになりました。

セットアップ

E ドライブに "test" というフォルダがあり、その中に "folder on windows host" というフォルダがあり、コマンドが動作していることがわかるようになっています。Dockerfileでは、以下のようなディレクトリが作成されます。 /data で、VOLUMEとWORKDIRとして定義しています。

持つ E:\test をPowerShellのカレントディレクトリにして、Dockerコマンドを絶対パスで実行すると、その中身が E:\test :

PS E:\test> docker run --rm -it -v E:\test:/data mirkohaaser/docker-clitools ls -la
total 0
drwxr-xr-x 2 root root 0 Jan  4 11:45 .
drwxr-xr-x 2 root root 0 Jan  5 12:17 folder on windows host

問題点

絶対表記ではなく、カレントディレクトリを使用したい。ボリュームでpwdを使用するとエラーメッセージが異なるため使用できなかった。

で試してみる ($pwd)

PS E:\test> docker run --rm -it -v ($pwd):/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error parsing reference: ":/data" is not a valid repository/tag.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

/($pwd) で試しています。

PS E:\test> docker run --rm -it -v /($pwd):/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error parsing reference: "E:\\test" is not a valid repository/tag.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

Trying with \´pwd´.

PS E:\test> docker run --rm -it -v ´$pwd´:/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Invalid bind mount spec "´E:\\test´:/data": invalid mode: /data.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

pwd`で試してみる

PS E:\test> docker run --rm -it -v `$pwd`:/data mirkohaaser/docker-clitools ls -la
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: create $pwd: "$pwd" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

Windows 10のDockerでカレントディレクトリをボリュームとしてマウントする際の正しい構文を教えてください。

解決方法を教えてください。

Windowsのコマンドライン( cmd ) のように、カレントディレクトリをマウントすることができます。

docker run --rm -it -v %cd%:/usr/src/project gcc:4.9

PowerShellでは ${PWD} で、カレントディレクトリが表示されます。

docker run --rm -it -v ${PWD}:/usr/src/project gcc:4.9

Linuxの場合。

docker run --rm -it -v $(pwd):/usr/src/project gcc:4.9

クロスプラットフォーム

以下のオプションは、PowerShellとLinux(少なくともUbuntu)の両方で動作します。

docker run --rm -it -v ${PWD}:/usr/src/project gcc:4.9
docker run --rm -it -v $(pwd):/usr/src/project gcc:4.9