1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【エラー対処】Jupyter/Jupyter LabでDockerにおいてマウントがされないとき

Last updated at Posted at 2020-06-12

はじめに

Jupyter LabをDockerで環境構築する
の記事で、JupyterLabをDockerで環境構築しようとしていたのですが

sudo docker run  \
    --rm \
    -e TZ=Asia/Tokyo \
    -p 8888:8888 \
    --name jupyterlab \
    -v $(pwd)/code:/code \
    jupyterlab:latest \
    start.sh jupyter lab --NotebookApp.password="sha1:xxxxxxxxxxxxxxxxxxxxxxxx"

このあたりで、どうも環境が構築できない・・・

というのも、-vオプションは
自分のディレクトリ:コンテナ側のディレクトリで、ディレクトリ内容を同期できるものなのですが、どうやら同期が出来ませんでした。

自分の環境がMacであることや、途中で操作ミスを行っていた可能性もあります。

今回は、その中で学んだことを、まとめていきます。

コンテナ内を調べる

まず

 docker run --rm --name test -it jupyterlab:latest bash

このコマンドで、jupyterlabイメージをtestというコンテナ名で作って、bashでつないでみます。

このコンテナ内で

echo $HOME

とすると、/home/jovyanがホームのようです。

-vに与えるディレクトリを変えてみる

結論から言えば、自分の場合-v $(pwd):/home/jovyan/code-v $(pwd)/code:/home/jovyan/codeとすることでうまくいきました。

そこまでに右往曲折あったのですが・・・

docker run  -v `pwd`:/home/jovyan/work/works -p 10000:8888 --name jupyter jupyter/datascience-notebook 

まず、以上のようにして、jupyterで普通に調べることにしました。
上記のようにすると、pwd=(Users/ganariya/~/The_ML)の内容

  • Dockerfile
  • .gitignore
  • README.md

が,/home/jovyan/work/worksに展開されていました。

つまり、
/home/jovyan/work/works/Dockerfile
/home/jovyan/work/works/.gitignore

のようになっていました。

どうやら、pwd:コンテナディレクトリは、ホストのpwdにある内容を、/home/jovyan/work/works内に展開しているようですね><

次に

docker run  -v `pwd`/abc:/home/jovyan/work/works -p 10000:8888 --name jupyter jupyter/datascience-notebook 

としてみました。つまり、ホストするMac側のファイルを、pwdではなく
pwd/abcディレクトリのものにしよう!というわけです。

このようにすると、pwd/abcの中身が/home/jovyan/work/worksに入っていました。

ここまでは想定通りのようです。

なぜ問題が起こったのか?

ここまでで調べた結果から
JupyterJupyterLabがtreeの基準にする位置が原因で、同期がされていないんだな という結論に至りました。

JupyterやJupyterLabは、おそらく変更はできると思うのですが
公式イメージからビルドしたコンテナを開くと

スクリーンショット 2020-06-13 8.53.30.png

上記のようになっており、/home/jovyanがtreeのものになっています。

よって、$(pwd):/home/jovyan/workや、$(pwd):/home/jovyan/work/worksは、jupyterで触れたわけです。

しかし、最初の$(pwd)/code:/codeでは、問題が発生します。
ホストディレクトリの$(pwd)/codeディレクトリを、コンテナのルートディレクトリのcodeというディレクトリに作成します。

しかし、datascience-notebookなどのデフォルトのイメージでは、そのコンテナのHomeが/home/jovyanであるため、/codeに触ることが出来ません。

よって、マウント自体はされているのですが、見えることのないさらに上位の階層でマウントされていたわけです・・・><

結論

脳死で使いたいときはJupyterに関しては

-v $(pwd):/home/jovyan/code

のように、/home/jovyan以下に置こう・・・><!

感想

/codeでもできそう・・・!(ホームディレクトリを変えたり、JupyterLabの起動位置を変える・・・?)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?