kenkento6's blog

データ分析、技術的試行錯誤、オンライン大学院生活にまつわることを書きます

Ubuntu(WSL2)内に立ち上げたDocker環境のJupyter Notebookへローカル(Windows)からアクセスする方法

Ubuntu(WSL2)内に立ち上げたDocker環境のJupyter Notebookへローカル(Windows)からアクセスするための忘備録です。
接続のイメージは以下。

STEP1 DockerからUbuntu(wsl2)にport forwardする

まずUbuntuから接続できるようにするために、コンテナ内のポートをホストに公開する

docker run -p host-port:vm-port image

vm-port: コンテナ内のポート
host-port: Dockerホストのポート

Jupyter notebookの場合

docker run -p 8888:8888 image

STEP2 ローカル(Windows)からUbuntu(WSL2)のポートにアクセスする

Option1 localhost:8888にアクセスする

驚いたのだが、localhostにアクセスすればそのままWSL2のポートにアクセスできる。
WSL を使用したネットワーク アプリケーションへのアクセス | Microsoft Learn

なので、localhost:8888にアクセスすればWSLの8888にアクセスでき、jupyter notebookが開ける。wsl2ではwslconfigでの設定は不要らしい。

Option2 WSL2にSSH接続し、その際にport fowardingする

最初Option1でできると思っていなかったので、考え付いたのはWSL2にsshにしてその際にport forwardingを設定することだった。

まず以下の記事を参照しWSL2へSSH接続するために公開鍵認証の設定をした。
WSL2のUbuntuにSSH(公開鍵/秘密鍵)で接続する - Qiita

SSH接続の際に、localhost:8888とUbuntu(WSL2)内の8888をリンクさせる。

ssh -L 8888:localhost:8888 -i ~/.ssh/id_rsa username@xxx.xxx.xxx.xxx

WSL2のIPアドレスは、windowsコマンドプロンプトから以下のコマンドで調べる。

wsl -e hostname -I

このIPアドレスは固定ではないらしいので、このoptionを使う場合には何か固定する方法が必要かも。
VSCodeSSH接続を設定しておいて、VSCodeのPortでlocalhostにforwardする設定をやっておくとコマンドを打つ必要がなくてすごい楽。

VSCode port