このシリーズでは、データサイエンス初心者でもできるようにDocker(ドッカー)を用いて分析環境を構築していきます!
このシリーズを読むことで、Dockerとはなにかを理解できるだけなく、Dockerによる分析環境ができるようになります!
Docker(を含めたインフラ分野の知識)はデータサイエンティストではもはや実務では必須の知識です。
今回の記事では以下のことを扱います!
- EC2上でdocker-composeとgit コマンドが打てるようにする
- EC2上でjupyternotebookを起動させる
Dockerは、現在データサイエンスを専攻している大学生は授業で習っており、今すぐにでも覚えるべき知識です。
それでは、Dockerを学んでいきましょう!
※今回の記事はMacOSでかつバージョンが10.14以上(CtalinaまたはMojave)を想定しています。
WineyTradeの記事にでてくるコードはLINE@にて配布をしております!
LINEのメッセージ欄に各記事のキーワードをお送りいただければ、ダウンロードリンクを送付いたします!
ソースコードを見逃したくない方は、今のうちにLINE登録をしておいてくださいね!

目次
EC2でdocker-composeとgit コマンドが打てるようにしよう!

前回私たちは、AWSのEC2を作成し分析環境をつくる準備をおこなっていきました。
今回は、実際にdocker-composeコマンドをEC2上でおこない、クラウドを用いて分析環境を構築する流れをおこなっていきます。
その中で、まずはEC2にdocker-composeとgit コマンドが打てるようにしていきます。
現在のEC2ではまだなにもインストールされていない状態ですので、コマンドを打っても何も動きません。
そのため、インストールをおこないjyupternotebookをクラウドで起動させるためにコマンドを入れていきます。
ぜひクラウド上での分析環境構築をマスターし、データ分析をするための環境のプロフェッショナルになりましょう!!
EC2にSSH接続でアクセスする
まずはEC2を起動し、ターミナルからSSH通信で接続しEC2にアクセスします!
ネットワークに接続された機器をSecure(安全に)遠隔操作し、管理するための通信手段。
まずは、AWSにログインしEC2のメニューに行きます。

そこからインスタンスのメニューにいき、停止中のコンテナを起動させます。
アクションを選択し、インスタンスの状態管理に移動します。

停止の状態を開始に変更します。

すると、停止中のEC2が起動しました。
このEC2にターミナルでこのあとアクセスしていきます!
起動させたあと、途中で長時間利用しない場合は必ず停止させるようにしましょう!!
このとき、SSH接続するときにパブリックIPv4DNS(黄色い枠で囲っているものの下のモノ)を使いますので、そのアドレスを予めコピーしておきましょう。

ローカルPCでターミナルを起動し、前回作成したキーがある場所で、
下記のようなコマンドを打ち、SSH接続をするさいにキーを照合できるようにします。
chmod 400 docker.pem

その後、キーある場所で下記のようなコマンドを打ち、ec2に接続していきます。
ssh -i docker.pem ec2-user@<<先ほどコピーしたDNS>>

すると、接続するかを聞かれるので、”yes”を選択します。
EC2にインスタンスに接続することができました!
dockerコマンドを打てるようにする
このままでは、まだdockerのコマンドがインストールされないので、インストールします。
下記のコマンドを打ち、インスタンスのバージョンを更新します。
sudo yum update -y

その後、下記のコマンドを打ち、dockerをインストールします。
今回は、インスタンスのAMIがamazonlinux2用のインストールをしていきます。
sudo amazon-linux-extras install docker

その後、下記のコマンドを打ちdockerを起動します。
sudo service docker start

その後、下記のコマンドを打ち、dockerコマンドを打つ時にsudo docker ~ではなくdocker ~ で打てるようにします。
sudo usermod -a -G docker ec2-user

その後、dockerコマンドが打てるかdocker infoで確認しますが、falseと表示されるので、exitをして再度ssh接続をしてきます。
exit

先ほどSSH接続をしたものと同様のコマンドでインスタンスに接続します。

そこから、docker infoを打ち込むとdockerコマンドが打てていることがわかります。
docker info

docker-composeをコマンドを打てるようにする
先ほど、dockerコマンドをインストールしたので、今度はdocker-compose コマンドをインストールし、コマンドが打てるようにします。
下記のコマンドが打ち、docker-composeをインストールします。
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

その後、下記のコマンドが打ち、docker-composeコマンドを打てるようにします。
sudo chmod +x /usr/local/bin/docker-compose

その後、下記のようにdocker-composeコマンドが打てるか確認すると、打てるようになったことが確認できます。
docker-compose --version

gitコマンドを打てるようにする
最後にgitコマンドをインストールしていきます。
フォルダなどを管理するために用いられるシステム
今回分析環境を作るにあたって、githubにあるwineytradeのdocker-compose.ymlファイルなどが格納させているフォルダをダウンロードし利用していきます。
gitのシステムの一種で、dockerhubのようにフォルダを共有したりできる場所。
そのため、gitコマンドをインストールし、ダウンロードできるようにしてきます。
下記のコマンドを打ち、gitをインストールします。
sudo yum install git

その後、下記のコマンドを打ち、git コマンドがインストールされたか確認します。
git version
インストール出来ました。

これにて、docker, docker-compose, git コマンドがインストールされました!
クラウド上でjupyternotebookが使えるようにしよう!

準備ができましたので、いよいよjupyternotebookをインスタンス上で起動させます。
gitコマンドを用いて分析環境必要なフォルダをダウンロードする
gitコマンドを用いて、分析環境必要なフォルダをダウンロードしていきます。
今回は、WineyTradeより用意したフォルダを用いて環境を作成しています。
フォルダの概要は下記のような感じです。

加えて、docker-compose.ymlの中身は下記の通りで、8888番ポートにアクセスするとjupyterにアクセスできるようにしています。
早速、下記のようなコマンドを打ち、フォルダをダウンロードします。
git clone https://github.com/WineyTrade/jupyternotebook.git

ダウンロードに成功すると下記のようなフォルダが確認できます。

コンテナを起動させて、EC2インスタンス上のjyupterにアクセスする
jyupyternotebookディレクトリに移動してdocker-compose up -d で分析環境のコンテナを起動します。
dockerc-compose up -d

docker ps で正常に起動されていることを確認します。
docker ps

その後、Webブラウザからインスタンス上のjyupternotebookにアクセスします。
このとき、アクセスする場所はlocalhost:8888ではなく、
<<先ほどコピーしたパブリックIPv4DNS>>:8888 でアクセスします。
ですが、ここでアクセスしてエラーが起きてしまいます。

理由としては、前回作成したルートテーブルで、アクセスが可能なポートに8888が登録されていなかったことが挙げられます。
そのため、インスタンスメニューにいき、起動中のインスタンスのセキュリティグループからルートテーブルを編集していきます。

ルートテーブルメニューにいくと、たしかに8888が登録されていないことがわかりますので、editをクリックし編集します。

今回は、下記のように8888番ポートを作成しどこからでもアクセス可能にします。
変更が終わると、下記のように8888が登録されていることがわかります。

改めてアクセスすると、jyupyternotebookコンテナにアクセスできたことがわかります!

簡単にjyupternotebookの動作確認をする
最後に簡単に動作確認をしていきます。
新しいnotebookのファイルを作成します。

作成後、簡単になんでもいいので出力させてみます。
加えて、ライブラリがインストールできるか試してみます。
今回は、株価が取得できるライブラリの pandas_datareaderをインストールしてみます。
pandas_datareaderがインストールできたので、試しに株価を取得してみます。

取得ができました。このようにインスタンス上でも問題なく動作していることが確認できます!
インスタンスを停止する
最後にインスタンスを停止させます。
インスタンスメニューにいき、Stop instanceを選択しインスタンスを停止させます。

停止が確認できました。
たまに停止と表示されているのに、リロードすると停止できていないこともあるので、確実に停止できていることを確認しましょう。
まとめ
今回は、
- EC2上でdocker-composeとgit コマンドが打てるようにする
- EC2上でjupyternotebookを起動させる
といった流れをおこなっていきました!
次回は、まず、バフェットコード様からダウンロードしたcsvファイルをローカルからクラウドに送信し簡単に分析する流れをみていきます。次に、ローカル環境でdockerコンテナ上でvscodeを使いデバック実行する流れもみていきます。
Dockerのシリーズを通し、データサイエンティストへの一歩を歩みましょう!
WineyTradeの記事にでてくるコードはLINE@にて配布をしております!
ソースコードを見逃したくない方は、今のうちにLINE登録をしておいてくださいね!
