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

目次
Dockerの基本コマンドを学ぼう

前回Dockerイメージのhello-worldからコンテナを簡単に触ってみましたが、ここで具体的にどのようなコマンドがあるのか、ターミナルを動かしつつ確認していきます!
ゲームと同じように、まずはなんとなくでいいので、実際にどんな操作をするとどんな動きをするのかみるのが吸収しやすいです!
そこで操作を覚えた上で、実践していくことがDocker習得のカギです!
それでは学習していきましょう!

Dockerコマンド①docker pull <Dockerイメージ名>
まずはdocker pull <Dockerイメージ名> コマンドです!
このコマンドはDockerHubからDockerイメージを取得するコマンドです。
Docker Hub とはDocker社が提供している、Dockerイメージを管理、提供する場所。
今回は、DockerhubからNginxのイメージを取得します!
無料で利用できるオープンソースのWebサーバの一つ。
Nginxの具体的な説明や用途は割愛しますが、今後Dockerイメージを利用する上でかなりの頻度でつかうものですので、ここで簡単に触りましょう!
ターミナルを起動し下記のようなコマンドを入力してください。
docker pull nginx

このように”nginx:latest”と表示されたら取得が成功です!(:latestについては次の節で説明します)
前回のhello-world以外の別のイメージを今後取得することができるようになりました!
Dockerコマンド②docker images
次にdocker images コマンドです!
このコマンドはPCにどのイメージが取得されているか確認するためのコマンドです!
ターミナルを起動し下記のようなコマンドを入力してください。
docker images
ちらをみると、hello-worldとnginxのイメージがあることがわかります。

ここで一旦ここにある表が何をさしているのか簡単に説明します。
REPOSITORY ・・・ イメージ名
TAG・・・ イメージのversionや細かい種類
IMAGE ID ・・・ イメージのID
CREATED・・・ イメージが作成された履歴
SIZE・・・ イメージの容量
様々な項目がありますが、ここではTAGのみ詳しく説明します。
TAGはイメージの具体的な種類を表します。
例えば、versionやdockerを起動した際に使うOSなどです。実際にNGINXのTAGは様々なものがあることがわかります。

引用:nginx images
ここではTAGは沢山あるという認識で大丈夫です!
他方、TAGを自分で付けることも可能です!
ここでは割愛しますが、今後使う機会があるとも思いますのでなんとなく頭の片隅に残していただけると嬉しいです!
Dockerコマンド③docker run <Dockerイメージ名>
イメージを取得したことを確認したところで、docker run <Dockerイメージ名>で実際にイメージをコンテナにし動かしてみましょう!
ターミナルを起動し下記のようなコマンドを入力してください。
docker run -d -it -p 80:80 nginx
ここでは、 ”-itd -p 80:80” は一旦魔法の呪文としてスルーしてください。(第3回にて詳しく説明します)

コマンドを入力後、お手元のブラウザ(chromeなど)でlocalhostと入力してください!(ローカル環境の場合)
そうすると、Nginxのwelcomeページが見ることができます!

このようにNginxのイメージをコンテナ化かせ起動させることができました!!
Dockerコマンド④docker ps
その次にdocker psコマンドをみていきます!
docker psは、dockerコンテナが動いているものを確認するためのコマンドです。
ターミナルを起動し下記のようなコマンドを入力してください。
docker ps
コマンドを入力すると、下記のようなものが表示されます。

こちらをみると、hello-worldとnginxのイメージがあることがわかります。
ここで一旦ここにある表が何をさしているのか簡単に説明します。
CONTAINER・・・ コンテナのID
IMAGE・・・コンテナをつくるもととなったイメージ
コマンド ・・・ コンテナを起動したときに自動で実行するコマンド
CREATED・・・ イメージが作成された履歴
STATUS・・・ コンテナが起動しているかどうかなどの状態をしめす
PORTS・・・ コンテナが開いているポート(第3回で説明)
NAMES・・・ コンテナの名前(自分で指定しない場合は勝手につけられる)
今はなんとなく様々な項目がある程度で大丈夫です!
Dockerコマンド⑤docker stop <コンテナID>
次に起動しているコンテナを停止させましょう!
docker stop <コンテナID> で起動中のコンテナを停止させることができます!(コンテナIDではなくコンテナ名でも可能です)
ターミナルを起動し下記のようなコマンドを入力してください。
docker stop <docker ps で表示されたnginxのコンテナid>
コマンドを入力後、docker ps をすると何も表示されないです。

ここで、起動していないコンテナも表示できるdocker ps -aをします。
docker ps -a
すると、nginxだけでなくhello-worldのコンテナも確認されました!

hello-worldのコンテナがある理由は次回に説明しますが、ここではdocker stopによりコンテナを停止させることができることを抑えましょう!
Dockerコマンド⑥docker start <停止しているコンテナID>
docker を停止したので今度はdocker を再起動しましょう!
docker start <停止しているコンテナID>で再起動します!
docker start <停止しているコンテナID>
こちらをしたのち、docker psをすると再起動されていることがわかります!

もちろんブラウザにアクセスしてもwelcomeページに飛ぶことができます!

Dockerコマンド⑦docker rm <dockerコンテナID>
最後に使用したdockerコンテナを削除しメモリの使用を節約します。
docker rm <dockerコンテナID> で削除します。
docker rm <停止しているコンテナID>
一旦docker stop で 起動中のコンテナを停止させます。
そしてdocker rm <コンテナID>で削除します。

削除することができました!
他の様々なコマンドやコマンドのオプションがありますが、詳しく公式ドキュメントのコマンド一覧を参考にしてください!
Dockerコンテナ上でPythonを動かしてみよう!
基本コマンドをみていったところで実践に移っていきます!
ここでは、コンテナ上でPython動かすことを実践してみます!
Pythonをコンテナ上で動かすことができるようになると、今後Docker上で分析することができるようになります!
Dockerhub からPythonイメージを取得しPythonコンテナを起動する
いままで習ったコマンドをもとに実践していきましょう!
まずは、pythonイメージ取得します。
docker pull python

その後、Pythonイメージがあるか確認します。
docker images

そいてPythonイメージからPythonコンテナを起動させます!
docker run -it python bash

細かい意味は次回に説明しますが、今回はコンテナを起動させたときにbashコマンドを実行させてコンテナ内に入ります。
UNIX系OSで標準的に用いられるシェルプログラムの一つ。
その後、”python” と入力させると対話式のpythonが起動します!
python

実際にprint(“hello world”)をするとhello worldと出力されていることがわかります!
その後、exit()でpythonを停止させます。
exit()

そして、exitでPythonコンテナから離れます。
exit

最後にPythonコンテナを消します!
docker rm <停止中のコンテナ>


このように、Dockerhub からPythonイメージを取得しPythonコンテナを起動させる流れを行うことができました!
まとめ
今回は、
- Dockerの基本コマンドを学ぶ
- Dockerコンテナ上でpythonを動かしてみる
といった流れをおこなっていきました!
次回は、基本コマンドの応用を行った後、jpyternotebookコンテナを起動させ、
簡単に株価を描画する流れを行っていきます!
Dockerのシリーズを通し、データサイエンティストへの一歩を歩みましょう!
WineyTradeの記事にでてくるコードはLINE@にて配布をしております!
ソースコードを見逃したくない方は、今のうちにLINE登録をしておいてくださいね!
