モチベ
- 初心者としてDockerで遊んでみたい
- libraryなどの心配不要なので便利らしい
やるぞ
1、Homebrew で Docker install
brew intall docker
brew cask install docker
brew-caskとはは こちらの記事 参照
要はmacのapplicationとしてのdockerをinstallする
2、Docker Desktop 起動
open /Applications/Docker.app
するとこれが出てくる
Docker Hub 上のimageを使うために、docker accountを持たないといけないので、ID持っていなければIDを登録して、ログインしておく
3、Jupyter Notebook のイメージを選ぶ
docker hub でjupyterを検索してみるとたくさん出てくる
それに入ってdocker-fileをみてみれば、どんなlibraryを入れているのかわかる
例えば、jupyter/scipy-notebook のpython libraryはこんな感じ
自分の想像だが、もっとも使われるのが、
- jupyter/minimal-notebook
- jupyter/scipy-notebook ※pandas/matlabplotが一通り入っている
-
jupyter/datascience-notebook ※r/juliaも入っているデータサイエンスに特化したnotebook
あたりではないでしょうか
自分の用途に合わせて、jupyter/scipy-notebookで事足りると判断し、そのimageをpullする
docker pull jupyter/scipy-notebook
4、Jupyter Notebookを起動する
docker run -it -p 8888:8888 --rm --name jupyter jupyter/scipy-notebook
# argsの意味は docker run --helpで調べられる
# -it / -rm はよほどのことがなければつける
上記のcommandで jupyterという名前のcontainerが立ち上がる
指示通りにurlをブラウザにコピペすれば、jupyter notebookを使うことができる!!
5、おまけ:やったことを保存したい
dockerはstatelessなため、container停止すると、作成中のnotebookのデータが消えてしまう。
データの保存には二方法考えられる。
① .ipynb
ファイルをダウンロードする
- notebook 動作中だとダウンロードできないので、notebook の前方のボックスをクリックして、shutdownをクリック
② docker container 起動時にfolderをマウントする
container内部と外部でファイルを共有する手段として、フォルダやファイルをマウントすることがある。
まずコマンドはこちら
docker run -it -p 8888:8888 -v /Users/watashi/my/jupyter:/home/jovyan/work --rm --name jupyter jupyter/scipy-notebook
-v /Users/watashi/my/jupyter:/home/jovyan/work
このargの意味は、PC上の/Users/watashi/my/jupyter
というフォルダを、container内の/home/jovyan/work
にマウントすること。
container内の/home/jovyan/work
がPC上の/Users/watashi/my/jupyter
の一つのエイリアスと考えるとわかりやすいかもしれない?
container内部のどこにマウントすれば良いかわからない場合、jupyterでterminalを開いてみてみると良いかも
↑こうやって/home/jovyan/work
だろうと推測できた