LoginSignup
16

More than 1 year has passed since last update.

【ポートフォワーディング】WSL2+Docker+Python環境でJupyter Notebookをブラウザで操作する方法

Last updated at Posted at 2022-12-22

はじめに

この記事は、WSL/WSL2のUbuntuで動かしているDockerコンテナ内のPythonからJupyter Notebookをブラウザで操作する方法を備忘録としてまとめたものです。

接続概要図

Windows上で動作しているWSL2、WSL2上で動作しているDockerコンテナ、と2段階の接続ルートがあるため、コンテナ内で起動したJupyter NotebookをWindowsのブラウザで操作するにはひと手間必要です。

以下に接続概要図を示します。

image.png

  • Windows、WSL2、Dockerコンテナでそれぞれ自分の立場で自身を指すLocalhostがすべて同じ名前であることに注意してください。

図に示す通り、それぞれのポートを接続する処理が必要です。

No 操作
Cドライブのマウントパス(/mnt/c)をコンテナ内にマウントし(/mnt/c/)、WSL2の8888ポートとコンテナの8888ポートを接続するようにDocker実行
Windows側からWSLへSSH接続(Windowsの8888ポートとWSLの8888ポートをポートフォワーディング)
Dockerコンテナ内にインストールしたJupyter Notebookを実行
ポートフォワーディングによってWindowsのLocalhostまでJupyterが飛んでくる状態になる
Jupyter実行時に出力されたLocalhost URLをそのままWindowsのブラウザに貼り付けて開く
😊 Cドライブに保存したNotebookを、WSL2上のDockerコンテナで動くJupyterで参照、実行できる

それぞれのコマンドをまとめると、以下のようになります。

①Dockerコンテナ実行

Cドライブのマウントパス(/mnt/c)をコンテナ内にマウントし(/mnt/c/)、WSL2の8888ポートとコンテナの8888ポートを接続するようにDocker実行

WSL2(ターミナル)
docker run --name XX -v /mnt/c/:/mnt/c/ -p 8888:8888 -d -it IMAGE bash

②SSH接続

まずは、Windowsから見えるWSLのIPアドレスを調べます。

Windows(コマンドプロンプト/Power Shell)
wsl -e hostname -I
# xxx.xxx.xxx.xxx

Windows側からWSLへSSH接続します(Windowsの8888ポートとWSLの8888ポートをポートフォワーディング)

Windows(コマンドプロンプト/Power Shell)
ssh -N -f -L 8888:localhost:8888 username@xxx.xxx.xxx.xxx

ポイント
WSLのSSHサービスが起動していない場合は、以下のコマンドを実行してください。

WSL2(ターミナル)
sudo service ssh restart

③コンテナ内でJupyter実行

Dockerコンテナ内にインストールしたJupyter Notebookを実行

WSL2(ターミナル)
jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root

④ブラウザにURL貼り付け&Jupyter操作

今回はポートフォワーディング元/先ポートを全て8888ポートで統一しているので、単純にWindowsでJupyterを起動した時と同じように、表示されたLocalhostのURLをブラウザで開くだけです。

To access the notebook, open this file in a browser:
        ~~~~~~~~~~~~~~~~
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=~~~~~~~~~~~~~~~~~
     or http://127.0.0.1:8888/?token=~~~~~~~~~~~~~~~~~

😊 Dockerコンテナで動かすJupyterをお楽しみください

あとはお楽しみください。

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
16