Kuzunoha-NEのブログ

pythonの勉強中。

DockerfileでホストOSのディレクトリをマウントしようとしてできなかったお話

DockerfileでホストOSのディレクトリをマウントしようとしてできなかったお話

Docker勉強中の葛の葉でス。

前回、Dockerfileを使ったほうがかしこいって話を少ししたかなと思っています。

kuzunoha-ne.hateblo.jp

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あたりの関連かな?

とりいそぎ