質問: こんにちは。 現在、練習の意味を込めて、dockerのコンテナ内でjupyterを一から構築しようとしています。 jupyternotebook自体が最初から入ったイメージのことは既に知っており、使い方も把握しているのですが、今回はそのようなイメージを使わず、自分で一から作れるかをやって見るというのが趣旨になります。 最終的にはこれをDockerfileに落とし込めるかまでやってみようと思っています。 その中で、Dockerへのjupyterのインストールと起動まではうまく行ったのですが、最後のブラウザからのアクセスのところでつまづいています。 具体的には、jupyter notebookの起動時に出てくるIPアドレスとポート番号でブラウザからアクセスしようとするのですが、読み込み中のバーが最初のところで止まり、画面も含めてそこから一切反応しなくなります。 jupyterの設定は、IPアドレスは'*'で指定しないようにしており、ポートは"8888"で指定しています。 そもそもCentOSの設定上で対応するIPアドレスか何かを決める必要があるのかな(「開放」のようなイメージです)と勝手に思っているのですが、ググり方が悪いのか有効な解決策が見つけられていません。 何か心当たりがあれば、ご教示いただければと思います。 このDockerコンテナの構築方法については下記に記しております。 イメージ(OS):CentOS7 構築手順 :yumでgitをインストール -> gitでpyenvをクローン -> pyenvでpython3.6.5をインストール ### 追記 > > コメント:Docker に渡す権限が足りていないような気がします。その Docker イメージでコンテナを起動する際にどのようなコマンドを打っているのか追記して頂けませんか? > > > → 下記のように特段、権限設定のようなものはしておりません。ここでIPアドレスやポート番号の設定が必要なのでしょうか。 ``` docker run -it --name test_jupyter centos /bin/bash ```
回答: Docker コンテナ内部で起動している Jupyter Notebook へローカルマシンからポート経由でアクセスしようとしている場合、コンテナ内部のポートとローカルマシンのポートを繋ぐことが必要です。 たとえば Jupyter 公式が配布している `jupyter/scipy-notebook` イメージでは起動時に `-p` オプションを使って以下のような起動の仕方をすると書かれています。 ``` docker run -p 8888:8888 jupyter/scipy-notebook:2c80cf3537ca ``` 質問者さんが自作なさっているイメージがどのようなものか分かりませんが、少なくともポートは公開するようにしておかないとコンテナ内部へポート経由でアクセスすることはできないはずです。