Google Compute Engine(GCE)にJupyterで必要最低限の分析環境を作る入門者向けの記事です。
code
インスタンス構築(GCE)
GCPコンソール画面のメニュータブより「VM インスタンス」を選び、「インスタンスを作成」をクリックして下さい。環境設定画面が起動するので、以下の情報を入力し、作成ボタンをクリックして下さい。コンソール上で、作れたのが確認できたら「開始」をクリックし起動して下さい。
「名前」:インスタンス名 「リージョン」:asia-northeast1 (東京) マシンタイプ:メモリやCPUの調整が可能です。 (データサイズに応じて選んで下さい)
IP制限の設定
インスタンスの構築ができたら、次はIPアドレスの範囲を制限します。メニュータブより「VPCネットワーク」を選択し、「ファイアウォール ルール」を選んで下さい。「ファイアウォール ルールを作成」をクリックし、以下の情報を入力し、作成ボタンをクリックして下さい。
「ターゲット」:ネットワーク上のすべてのインスタンス 「ソース IP の範囲」:PCで繋いでるグローバルIP
繋いでるグローバルIPアドレスはこちらのサイトより調べることができます。
https://www.cman.jp/network/support/go_access.cgi
Dockerインストール
DockerでJupyter環境を作ります。「VM インスタンス」画面より、「SSH」を選び、
インスタンスにSSHで接続して下さい。まずは、インスタンスのOSを確認し、公式サイトに従ってDockerをインストールします。
docs.docker.com
※ インスタンスを作る時にOSを選べます。デフォルトではDebianです。
$ cat /proc/version Linux version 4.9.0-9-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.168-1+deb9u3 (2019-06-16) $ sudo apt-get update Fetched 1,405 kB in 1s (1,093 kB/s) Reading package lists... Done $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - $ sudo apt-key fingerprint 0EBFCD88 $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable" $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
インストールできたか確認します。
$ docker Usage: docker [OPTIONS] COMMAND
Jupyter環境構築(Docker)
Dockerイメージを取得しコンテナを起動します。
$ sudo docker pull jupyter/datascience-notebook $ sudo docker images jupyter/datascience-notebook # sudo docker run -d --name notebook -v /home/data:/home/jovyan/ -p 8888:8888 jupyter/datascience-notebook $ sudo docker run -d --name notebook -p 8888:8888 jupyter/datascience-notebook b9c5abc33f3c3086a1c0fda9277440af3d27cd9d2e8e49b13572e173d396ec9b http://35.225.163.211:8888/login?next=%2Ftree%3F
トークンが必要なので、立ち上げたJupyterのコンテナに入ります。まず、コンテナIDを確認
$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b9c5abc33f3c jupyter/datascience-notebook "tini -g -- start-no…" 5 minutes ago Up 5 minutes 0.0.0.0:8888->8888/tcp notebook
コンテナに入り、トークンを確認します。
$ sudo docker exec -it b9c5abc33f3c /bin/bash jovyan@b9c5abc33f3c:~$ jupyter notebook list Currently running servers: http://0.0.0.0:8888/?token=4584bd118870b3a0f7b7598718e5cbe23fde46be711a1f29 :: /home/jovyan
トークンが確認できました。ブラウザで確認してみます。IPアドレスをインスタンスのIPアドレスに置き換えて下さい。
VMインスタンスコンソールよりIPアドレスは確認できます。
http://35.225.163.211:8888/?token=4584bd118870b3a0f7b7598718e5cbe23fde46be711a1f29
ブラウザで確認できました〜。
Jupyter環境構築(Dockerを使わない)
Dockerを使わない方法も書いておきます。まず、デフォルトではPython2系が使われていますのでPython3系に切り替えます。
(DataFlowでPython2系使いたい時とかDocker使わない方法選んでもいいかも)
$ python --version Python 2.7.13
3系に切り替えるために、pyenvを使います。
www.case-k.jp
$ sudo apt-get install git $ git clone git://github.com/yyuu/pyenv.git ~/.pyenv $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile $ source ~/.bash_profile $ sudo apt install bzip2 -y Reading package lists... Done
pyenvでインストール可能なパッケージを確認し、最新のパッケージをインストールします。今回はminicondaをインストールします。
$ pyenv install --list $ pyenv install miniconda3-4.3.30 Downloading Miniconda3-4.3.30-Linux-x86_64.sh... $ pyenv global miniconda3-4.3.30
バージョンが切り替わったか確認します。
$ python --version Python 3.6.3 :: Anaconda, Inc.
Jupyterをインストールします。
$ pip install jupyter
ブラウザからアクセスできるよう、インスタンスのIPアドレスを設定します。
$jupyter notebook --generate-config $ sudo vi ~/.jupyter/jupyter_notebook_config.py 変更前: #c.NotebookApp.ip = 'localhost' 変更後: c.NotebookApp.ip = '0.0.0.0'
起動します。
$ jupyter notebook http://(tmp or 127.0.0.1):8888/?token=9858cf5ae70614d06f5d513cbf5f604514d4b1bff4722a9c
インスタンスのIPに書き換えてブラウザで確認して下さい。
# http://35.225.163.211:8888/tree
Python 2系
$ sudo curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python $ sudo pip install jupyter $jupyter notebook --generate-config $ sudo vi ~/.jupyter/jupyter_notebook_config.py $ jupyter notebook
こちらも問題なさそうです。