Docker Toolbox利用時においてホストのディレクトリをマウントできない


概要

Docker Toolbox利用時において、ホストのディレクトリをマウントできなかった。
Toolboxでは、デフォルトでマウントできるのはC:\Users 配下のみ。
-vオプションを利用して、マウントを指定をし、マウントできなくとも、エラーにはならないため、間違いに気づくのが難しい。
対応としては、C:\Users配下をマウントするか、VMに対して別途設定が必要。

発生エラー

Dドライブ配下のディレクトリをマウント指定してnginxのイメージを起動させた。
コマンド上はエラーが出ずに完了したが、マウントしたフォルダに配置したファイルは見えていなく、正常にマウントされていなかった。

$ docker run --name test-nginx -v /d/dockerTest:/usr/share/nginx/html:ro -p 8080:80 nginx
2018/12/28 01:37:03 [error] 6#6: *1 open() "/usr/share/nginx/html/index.html" failed (2: No such file or directory), client: 192.168.99.1, server: localhost, request: "GET /index.html HTTP/1.1", host: "192.168.99.100:8080"

$ docker stop test-nginx; docker rm test-nginx
test-nginx
test-nginx

$ docker run --name test-nginx -v /d/dockerTest:/usr/share/nginx/html:ro -p 8080:80 nginx ls -l /usr/share/nginx/html
total 0

エラー原因

VMの設定上、C:\Users 配下しか共有設定がされていないから。

対応策

Toolboxで構築されたVM配下の通り、VirtualBoxから見ると共有されているディレクトリは

よって、対応としては、C:\Users配下をマウントするか、VMに対して別途設定が必要。
今回は以下のように、C:\Users配下をマウントするように設定した。

$ docker run --name test-nginx -v /c/Users/dockerTest:/usr/share/nginx/html:ro -p 8080:80 nginx
192.168.99.1 - - [28/Dec/2018:02:05:23 +0000] "GET /index.html HTTP/1.1" 200 531 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "-"

参考

Dockerにホストのフォルダをマウントしたい!