tropicbirdのブログ

備忘録です。

Jupyterを3つの環境(ホストOS、WSL、Vagrant)で同時に起動する。

はじめに

ホストOS(Windows)、WSL、VagrantにそれぞれJupyterをインストールしていて、それらを同時に起動して作業したい時に、上手く起動できない問題の解決策を紹介。結論としては、デフォルトのままだと、全てがローカルポート8888を使おうとしてエラーが生じるので、ローカルポートをうまく割り当てると解決する。

まずWSLで起動
C:\Users\*WinUSERNAME>bash
(base) *LinuxUSERNAME@DESKTOP-XXXXXXX:/mnt/c/Users/*WinUSERNAME$
(base) *LinuxUSERNAME@DESKTOP-XXXXXXX:/mnt/c/Users/*WinUSERNAME$ cd ~
(base) *LinuxUSERNAME@DESKTOP-XXXXXXX:~$ jupyter lab

jupyter lab入力後に表示されるURLをブラウザに張り付けると、WSL上のJupyterが起動する。
※この時のローカルポートは8888である。

次にVagrantで起動
C:\Users\*WinUSERNAME\*vagrantのフォルダ>vagrant up
C:\Users\*WinUSERNAME\*vagrantのフォルダ>vagrant ssh -- -L 8887:localhost:8888
(base) vagrant@ubuntu-bionic:~$ jupyter lab

ポイントは「vagrant ssh -- -L 8887:localhost:8888」とすること。
jupyter lab入力後に表示されるURLは「http://127.0.0.1:8888/?token=*xxxxxxxxxxxxxxxxxxxxxxxx」となってるので、この8888を8887にして(つまりhttp://127.0.0.1:8887/?token=*xxxxxxxxxxxxxxxxxxxxxxxx として)ブラウザに張り付けるとvagrant上のJupyterが起動する。
※この時のローカルポートは8887である。

最後にホストOS(Windows)で起動

Anaconda等からJupyter Labを起動すれば、自動的にローカルポートは8889(つまり8887と8888以外)に設定される。

同時に開いているときのURLはこんな感じになる。

f:id:tropicbird:20191102204121j:plain
左:Vagrant、中央:WSL、右:ホストOS(Windows