概要
社内にkaggle部なるものができ、その一員になった。機械学習の実行・理論は一通り抑えたのだが、これを機にDockerとかLinuxとかクラウドとかその辺の知識も身につけてしまうぞー、おーっ!
ということで、Dockerコンテナに機械学習の実行環境を包むということをインフラ知識なしながらに頑張ってみた。
知識
・Dockerの教科書
・GCPの教科書
を流し読みしたのみ
#実行環境
実行環境は以下の通りです
・Ubuntu 16.04.6 LTS
・GCE VM
#手順
dockerの公式を参考に以下のコマンドを実行する。
Docker CEのインストール前の準備
###旧Dockerの削除
$ sudo apt-get remove docker docker-engine docker.io containerd runc
###aptのUpdate
aptとはUbuntu Linuxへの、ソフトウェアのインストール・アンインストールを管理するためのコマンドです
$ sudo apt-get update
次にaptにHTTPS通信でリポジトリにアクセスすることを可能にします。
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
###dockerのGPGキーを取得する
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
###GPGキーの情報を確認する
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
###aptリポジトリの追加
ここでdockerが公開しているaptリポジトリを追加します
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
上のコマンドはx86_64 / amd64の場合です。
armhf,arm64は異なるので公式で確認してください。
##Dockerのインストール
aptをupdateします
sudo apt-get update
###インストール!
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
###確認
インストールの確認を行いましょう。
$ sudo docker version
Client: Docker Engine - Community
Version: 19.03.4
API version: 1.40
Go version: go1.12.10
Git commit: 9013bf583a
Built: Fri Oct 18 15:53:51 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.4
API version: 1.40 (minimum version 1.12)
Go version: go1.12.10
Git commit: 9013bf583a
Built: Fri Oct 18 15:52:23 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
うまくいっていればこのように表示されるはずです。
##jupyterイメージのPull
公式dockerHubに公開されているimageを検索します
$ sudo docker search --limit 10 jupyter
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
jupyter/datascience-notebook Jupyter Notebook Data Science Stack from htt… 552
jupyter/all-spark-notebook Jupyter Notebook Python, Scala, R, Spark, Me… 256
jupyterhub/jupyterhub JupyterHub: multi-user Jupyter notebook serv… 224 [OK]
jupyter/scipy-notebook Jupyter Notebook Scientific Python Stack fro… 191
jupyter/tensorflow-notebook Jupyter Notebook Scientific Python Stack w/ … 178
jupyter/pyspark-notebook Jupyter Notebook Python, Spark, Mesos Stack … 124
jupyter/minimal-notebook Minimal Jupyter Notebook Stack from https://… 87
jupyter/base-notebook Small base image for Jupyter Notebook stacks… 83
jupyterhub/singleuser single-user docker images for use with Jupyt… 24 [OK]
jupyter/nbviewer Jupyter Notebook Viewer 18 [OK]
「--limit 10 jupyter」とすることで、DockerHubの検索窓にJupyterと入力した時に、検索エンジンに引っかかる上位10個が表示されます。
重そうだけどとりあえず一番Starsが多い
「jupyter/datascience-notebook」を使うことにします。
$ docker image pull jupyter/datascience-notebook
で、imageをpullします。
そして暫く待つ。
インストールが完了したら
$sudo docker image ls
を入力します。すると、
REPOSITORY TAG IMAGE ID CREATED SIZE
jupyter/datascience-notebook latest eaac14a737db 7 weeks ago 4.78GB
重い! しかし、追加されていることがわかります。
##コンテナの起動
イメージをpullできたところでいよいよコンテナからjupyte notebookを起動しましょう
$ sudo docker run -p 8888:8888 --name jupyter jupyter/datascience-notebook
Executing the command: jupyter notebook
[I 08:23:39.510 NotebookApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
[I 08:23:39.827 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.7/site-packages/jupyterlab
[I 08:23:39.827 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 08:23:39.830 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 08:23:39.830 NotebookApp] The Jupyter Notebook is running at:
[I 08:23:39.830 NotebookApp] http://b565b8761105:8888/?token=63a1e4253e97a29d8d34299b56eaf7b91b0b2f3f8fb1ce9e
[I 08:23:39.830 NotebookApp] or http://127.0.0.1:8888/?token=63a1e4253e97a29d8d34299b56eaf7b91b0b2f3f8fb1ce9e
[I 08:23:39.831 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 08:23:39.835 NotebookApp]
To access the notebook, open this file in a browser:
file:///home/jovyan/.local/share/jupyter/runtime/nbserver-7-open.html
Or copy and paste one of these URLs:
http://b565b8761105:8888/?token=63a1e4253e97a29d8d34299b56eaf7b91b0b2f3f8fb1ce9e
or http://127.0.0.1:8888/?token=63a1e4253e97a29d8d34299b56eaf7b91b0b2f3f8fb1ce9e
一見起動されたようですが…。
##確認
"http://[URL]:8888/?token = [token]"
にアクセスしてみます。
アクセスできました!