Windows
docker
boot2docker

Boot2Docker on WindowsでMinGWのパス変換を回避する

More than 3 years have passed since last update.

WindowsのBoot2Dockerでdocker execのようなパスを渡すコマンドを実行すると以下のように失敗してしまいます。

$ docker exec -it 500e4b38e0fd /bin/bash
exec: "C:/Program Files (x86)/Git/bin/bash": stat C:/Program Files (x86)/Git/bin/bash: no such file or directory

これはMinGWのPosix path conversionによってパスがいい感じに変換されてしまうためです。
このルールとエラーメッセージから/bin/bashC:/Program Files (x86)/Git/bin/bashに変換されている事が分かります。
それではどうすればいいのかと言えば、パスの先頭の/を二重にすることで変換を抑制できます。

$ docker exec -it 500e4b38e0fd //bin/bash
root@500e4b38e0fd:/data#

MinGWのPosix path conversionはコマンドライン文字列のすべてに影響するので-fオプションなどでファイルのパスを指定する際も同様に対処が必要になります。