Docker in Dockerで-v/--volumeでマウントできないのは実際にDockerがあるホストのパスとして認識するから
-vを使っているのにマウントできないのはそのパスをコンテナの外側の実際にDockerがあるホストのパスとして認識してrunするから。仕組みを考えれば当たり前だが、他の考慮事項もあってハマった。 hr.icon
きっかけ:
Rust PlaygroundをDocker in Dockerで動かそうとしていて、ずっと「error: couldn't read src/main.rs: Is a directory (os error 21)」というエラーがPlayground上に出ていて、なぜかマウントしたファイルがディレクトリになる問題を抱えていた。ソースコードを変えながら長いビルドを待ちつつ色々試していたも正常にファイルが生成されていて問題なさそうで、RustのTempDirを使うため、dropされたときに一時ディレクトリごとinput.rsが消えるのを一時的に無効にしたり色々してデバッグログに出るdocker runを手動で打てるようにしてもsrc/main.rsがディレクトリになってしまう問題にぶつかって、rust-stableイメージ以外の他のイメージでもマウントできず、Docker in Dockerでマウントできないなと思ってそれを調べて以下のページを見つけてようやく意味がわかったという流れ。 おまけ: