DockerfileでホストOSのディレクトリをマウントしようとしてできなかったお話
Docker勉強中の葛の葉でス。
前回、Dockerfileを使ったほうがかしこいって話を少ししたかなと思っています。
Dockerでimageを生成するときはDockerfileを使ったほうがコマンドが作れるし、みんなで共有できていいねってことでカリカリ書いていました。しかし、ホストOSのディレクトリをマウントしようとしてやってもやってもうまくいかない!っていうことがありましたので共有をばと。
やったこと
環境
Windows10 home
Docker Toolbox
Dockerfileを打ち込み候
FROM ubuntu:18.04 RUN apt install update RUN apt install upgrade ; apt install python3 VOLUME ["/c/Users/*******/www","/pytest"] CMD python /pytest/helloworld.py
ビルドしてみる
docker build -t atarashiiimage . ~~~~~~~~~ ビルド画面は中略 ~~~~~~~~~ docker run atarashiiimage
Pythonがエラー吐く
python //helloworld.py うんちゃらかんちゃら…
なんかホストOSのディレクトリ がうまく読み込めてないみたい
期待した値は
python /pytest/helloworld.py
だったんだけど
コンテナ内に入ってみる
docker run -it atarashiiimage /bin/bash
lsコマンドで中身をみる
root@1234567890^ $ls /pytest
しーん…
えええええええええええええええ
なんにも入ってないの!?
原因1 DockerfileではホストOSのディレクトリをマウントできんらしい
詳しくはこちら コンテナでデータを管理 — Docker-docs-ja 17.06.Beta ドキュメント
Dockerfileはあくまでimageを作ることが目的っぽいねんな…
containerとして稼働させるときはDocker Composeを使いましょう…
Compose ファイル・リファレンス — Docker-docs-ja 17.06.Beta ドキュメント
原因2 Docker Toolboxでは/ディレクトリ直下にマウントできんらしい
docker runでcontainerを作るときに-v
を使えばマウントできます。
docker run -v /c/Users/*****/www:/pytest -it atarashiiimage
でも/pytest
のところがよくないみたい
docker run -v /c/Users/*****/www:/pytest/www -it atarashiiimage
こんな感じで/pytest/www
みたいに/直下じゃなくて一個ディレクトリを挟むといいらしい
原因X 共有場所の問題
その他にもルールはあるみたいで、Docker Toolboxでは/c/Users
以下じゃないとだめみたい。
Virtualboxあたりの関連かな?
とりいそぎ