1. Docker / Jupyter notebook¶
このページではDockerを用いるための環境構築方法について説明します。Dockerの詳細については以下のような資料も参考にしてください。
1.1. Dockerのインストール¶
Mac, Windows10 Pro, Windows10 Homeでそれぞれインストール・設定方法が異なります。詳細は以下の林さん作成の資料を参照してください。
その他参考ページ:
1.1.1. Dockerイメージのダウンロード¶
rnakato/singlecell_jupyter というのが、中戸作成の1細胞解析用Dockerイメージの名前になります。 以下のコマンドでダウンロードします。(ダウンロード済のイメージを最新版に更新したい場合も同様にpullします)
docker pull rnakato/singlecell_jupyter
1.1.2. DockerからJupyterの起動¶
-v オプションをつけることで、コンテナ内のディレクトリをホストPCのフォルダと同期させることができます。こうしておかないと、Docker内で作成したjupyterファイルがDocker終了後消えてしまいますので注意してください。
1.1.2.1. Mac terminalの場合¶
docker run --rm -p 8888:8888 -v $(pwd):/opt/work rnakato/singlecell_jupyter jupyter notebook --allow-root
To access the notebook, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
Or copy and paste one of these URLs:
http://f6251475ae06:8888/?token=0b07988ac7e4cf803c53d07f4de0366cc20ed4568343d
or http://127.0.0.1:8888/?token=0b07988ac7e4cf803c53d07f4de0366cc20ed4568343d
1.1.2.2. Windows10 Pro の場合¶
あらかじめ Docker の “Setting” でCドライブをマウントしておいてください。 その後、(Windows Powershellなどで) 以下のコマンドを実行します。
docker run --rm -p 8888:8888 -v c:/Users:/opt/work rnakato/singlecell_jupyter jupyter notebook --allow-root
Eドライブをマウントする場合は以下のようにします。(先にEドライブをマウントしておく)
docker run --rm -p 8888:8888 -v e:\:/opt/work rnakato/singlecell_jupyter jupyter notebook --allow-root
参考:https://qiita.com/kikako/items/7b6301a140cf37a5b7ac
To access the notebook, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
Or copy and paste one of these URLs:
http://f6251475ae06:8888/?token=0b07988ac7e4cf803c53d07f4de0366cc20ed4568343d
or http://127.0.0.1:8888/?token=0b07988ac7e4cf803c53d07f4de0366cc20ed4568343d
1.1.2.3. Windows10 Home (Windows7) の場合¶
先にJupyter notebook用のフォルダを作成し、Virtual boxの設定でマウントしておくと良いです。 以下はVirtual box内でのマウントポイントを/jupyterにした場合です。
docker run --rm -p 8888:8888 -v /jupyter:/opt/work rnakato/singlecell_jupyter jupyter notebook --allow-root
To access the notebook, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/nbserver-6-open.html
Or copy and paste one of these URLs:
http://f6251475ae06:8888/?token=0b07988ac7e4cf803c53d07f4de0366cc20ed4568343d
or http://127.0.0.1:8888/?token=0b07988ac7e4cf803c53d07f4de0366cc20ed4568343d
1.1.3. Dockerについての補足¶
1.1.3.1. Tokenが要求される場合¶
Jupyterが開いた時に “password or token” を入力する画面になった時は、上記URLの “taken=” 以降の文字列をコピペして入力してください。
1.1.3.2. Dockerコンテナの確認¶
コンテナの起動
docker run -it --rm <コンテナ名> <コマンド> # コンテナを新規起動してコマンドを実行
docker exec -it <コンテナ名> <コマンド> # 実行中のコンテナでコマンドを実行
現在存在するコンテナの確認
docker ps # アクティブなコンテナの一覧表示
docker ps -a # 非アクティブなコンテナを含めた一覧表示
コンテナの停止・削除
docker stop <コンテナ名> # 実行中のコンテナを停止
docker start <コンテナ名> # 停止中のコンテナを起動
docker rm <コンテナ名> # コンテナの削除
Dockerイメージの確認・削除
docker images # ダウンロードしたイメージの一覧表示
docker rmi <image名> # ダウンロード済イメージの削除
Note
過去に起動したコンテナが残ったままで同じコンテナ名をつけて実行すると、 「コンテナが既に存在するため作成できません」とエラーになります。その場合は docker stop <コンテナ名>
として既存のコンテナを停止、 docker rm <コンテナ名>
で削除してから、あらためて起動してください。
1.1.4. SingularityからJupyterの起動¶
本DockerイメージはSingularityを用いても実行可能です。 Singularityの詳細については以下のような資料を参考にしてください。
Singularityイメージ (rnakato_singlecell_jupyter.img) の作成
singularity build -F rnakato_singlecell_jupyter.img docker://rnakato/singlecell_jupyter
SingularityイメージからJupyterの起動
singularity exec rnakato_singlecell_jupyter.img jupyternotebook.sh
ホストPCのGPUを利用する場合は --nv
オプションを付加してください。
singularity exec --nv rnakato_singlecell_jupyter.img jupyternotebook.sh
ホストPCの特定のディレクトリを利用する場合は --bind
オプションを付加してマウントします。
# ホストPCの /work ディレクトリをマウント
singularity exec --bind /work rnakato_singlecell_jupyter.img jupyternotebook.sh
インストールされているLinuxコマンドを直接呼び出すことも可能です。
# cellphonedbの起動
singularity exec rnakato_singlecell_jupyter.img cellphonedb
1.1.5. Jupyter notebookの使い方¶
上がJupyterを起動した状態です。赤枠の “New” を選択し、 “R” または “Python3” の適切な方を選択すると notebook が新規作成されます。
セル内にコマンドを書き込み、上部の “>Run” をクリックするとセル内のコマンドが実行されます。 左のカッコ内が “*” になっている間はコマンド実行中で、完了すると数字に変わります。
“+” ボタンを押すとセル追加、ハサミマークを押すと現在のセルが削除されます。 一番左のフロッピーマークが保存です。 実行中のセルで “■” ボタンを押すと実行を中止します。
参考: jupyter notebookの基本的な使い方。起動と終了
1.1.5.1. データの保存¶
Docker内で作成したファイルは、Docker終了時に消えてしまいます。
ファイルを永続化するために、上のコマンドでは -v
オプションを付加し、
ホスト(PC)側のフォルダとDockerコンテナのopt/workディレクトリを同期しています。
opt/workディレクトリの中でファイルを作成すれば、同期したホスト側フォルダの中にファイルが残り、Docker終了後も消えることはありませんので、繰り返し用いることができます。
Note
-v
オプションで同期するホスト側のフォルダのパスに2バイト文字(ひらがな・カタカナ・漢字など)が含まれていると、同期に失敗するようです。