MobaXtermでEC2インスタンス上のDockerコンテナとポートフォワーディング[MobaXterm][EC2][AWS]
本記事は,前回の記事の続きです.
前回の記事では,EC2のインスタンスにjupyterを介してアクセスする為に,MobaXtermのポートフォワーディング機能を使った.
今回は話を更に発展させて,EC2のインスタンス上にdockerのコンテナがある場合,そのコンテナにjupyterを介してアクセスする為の方法を紹介する.
MobaXtermでの設定
お手持ちのノートPCなどにMobaXtermをインストールしよう.
インストール後,上のバーの「Tunneling」というボタンを押し,「New SSH tunnel」のボタンを押すとGUIで分かりやすく構成された設定画面が出てくるはずだ.
参考までに筆者の設定値を下に載せる.
注意:画像では8888番ポートを開けると設定してあるが,実際に開けたポートは8080番である.
他に設定した項目としては,
local network adapterを 127.0.0.1 に変更
Web proxyを設定
Auto start と Autoreconnectをオンに設定
である.
後は,スタートボタンを押すとポートフォワーディングが実行される.
EC2でdockerコンテナを立てる
外部からコンテナにアクセスする為にポートフォワーディングの設定をし,コンテナを立てる.
docker run -it -p 8080:8080 --runtime=nvidia --name "hoge_container" hoge_image:1.0 /bin/bash
今回は,-p のところでホストの8080番とコンテナの8080番のポートをフォワーディングすると設定した.
立てたコンテナにjupyterをインストール後(手順は割愛),以下のコマンドを打つ.
jupyter notebook --port=8080 --ip=0.0.0.0 --allow-root
jupyter notebook
だけではエラーが返ってくるので注意.コマンドを打つと以下の出力が出てくるはずだ.
[I 02:11:22.052 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret [I 02:11:22.246 NotebookApp] JupyterLab extension loaded from /home/ubuntu/.pyenv/versions/anaconda3-5.3.0/lib/python3.7/site-packages/jupyterlab [I 02:11:22.247 NotebookApp] JupyterLab application directory is /home/ubuntu/.pyenv/versions/anaconda3-5.3.0/share/jupyter/lab [I 02:11:22.250 NotebookApp] Serving notebooks from local directory: /home/ubuntu/tmp [I 02:11:22.250 NotebookApp] The Jupyter Notebook is running at: [I 02:11:22.250 NotebookApp] http://localhost:8888/?token=xxxx # ここにjupyterのtokenが出現 [I 02:11:22.250 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 02:11:22.255 NotebookApp] No web browser found: could not locate runnable browser. # Docker上で動かしているのでブラウザが無いとのメッセージがでるが,全く問題ない [C 02:11:22.255 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: [I 02:11:34.778 NotebookApp] 302 GET / (127.0.0.1) 0.78ms [W 02:11:34.808 NotebookApp] Clearing invalid/expired login cookie username-localhost-8888 [W 02:11:34.808 NotebookApp] Clearing invalid/expired login cookie username-localhost-8888 [I 02:11:34.808 NotebookApp] 302 GET /tree? (127.0.0.1) 1.48ms
ここまでくればok.
お手持ちのPCでEC2インスタンス上のjupyterにアクセス
ここまでくれば,後はお手持ちのノートPCでchromeやfirefoxを起動し,アドレスバーに http://localhost:8080
を打てば,jupyterの画面が出てくるはずだ.
筆者の画面では,初回起動であったため,パスワード変更が求められた.この画面がでても焦る必要はない.先ほどjupyter notebook
のコマンドを打ったときの出力にtokenが書かれているので,それと任意のNewPasswordを設定するだけで解決するのだから.
以上.お疲れ様でした.
ディスカッション
コメント一覧
まだ、コメントがありません