Dockerで分析環境を構築しよう⑤

why
why
docker のコマンドを楽につかうには、どうしたらいいのかな?

このシリーズでは、データサイエンス初心者でもできるようにDocker(ドッカー)を用いて分析環境を構築していきます!

このシリーズを読むことで、Dockerとはなにかを理解できるだけなく、Dockerによる分析環境ができるようになります!

このシリーズを読むとわかること

  • Dockerとはなにか理解する
  • 基本的なDockerコマンドを学ぶことができる
  • Dockerでjupyternotebookを構築し、株価を描画することができる
  • クラウド上でDockerによる分析環境構築し株価を分析することができる

Docker(を含めたインフラ分野の知識)はデータサイエンティストではもはや実務では必須の知識です。

今回の記事では以下のことを扱います!

  • docker-composeとはなにか理解しよう!
  • docker-comcoposeを使ってみよう!

Dockerは、現在データサイエンスを専攻している大学生は授業で習っており、今すぐにでも覚えるべき知識です。

それでは、Dockerを学んでいきましょう!

※今回の記事はMacOSでかつバージョンが10.14以上(CtalinaまたはMojave)を想定しています。

WineyTradeの記事にでてくるコードはLINE@にて配布をしております!
LINEのメッセージ欄に各記事のキーワードをお送りいただければ、ダウンロードリンクを送付いたします!

ソースコードを見逃したくない方は、今のうちにLINE登録をしておいてくださいね!

友だち追加

docker-composeとは理解しよう!

 

今まで私たちはdockerコマンドやdockerコマンドオプションなどを学んでいきました。

その中で今回は、docker-composeを覚え、dockerのコマンドを楽に利用できるようにします!

docker-composeをマスターすることで、dockerの長いコマンドを打たずに済むだけでなく、docker-composeはdocker-compose,yml(yml形式のファイル)にdockerの操作内容を記載するため、ファイルさえあれば、同様の環境が作成できるようになります。

ぜひdocker-composeをマスターできるようになりましょう!

docker-composeとは

まずはdocker-composeとはなにか簡単にみていきます!

docker-composeとは

docker-composeコマンドとよばれるコマンドを実行することで、複数のコンテナを1度に起動したり停止したりできる仕組みのこと。

docker-composeは、コンテナを一気に複数たてることに基本的に用いられていますが、その時に使われてるdocker-composeコマンド自体がそこまで難しいコマンドではないのも特徴です。

docker-composeのメリット

docker-composeのメリットとして、主に2つがあげられます。

  1. docker runでコンテナを起動するのに比べて、コマンドを打つ手間が掛からない
  2. docker-composeを使う際に使われるdocker-compose.ymlファイルが、一つの環境の設計書なものため、違う環境でもこのファイルさえあれば、同様のコンテナが作成できる

ひとつずつみていきましょう。

1つ目に関してては、コンテナを起動したときの操作や、ボリュームやポートなどのオプション情報をdocker-compose.ymlというyml形式のファイルに全て記述するため、コマンドを打つ手間が掛かりません。

2つ目に関してては、前回説明したDockerfileのようにdocker-composeを利用する際に使われるファイルさえあれば、誰でも同じコンテナが作成できるようになります。

言葉で話すより、実際に体験をした方がイメージがしやすいので、次章でdocker-composeを試してみましょう!

docker-composeを使ってみよう!

では早速docker-composeを利用し、簡単にdockerコマンドを利用できるようにしましょう!!

今回は「前回おこなったpythonのDockerfileからコンテナ起動までをおこなう」といったことを、docker-composeで一気にできるようにします!

docker-composeを利用するにあたって、前回と同様にコードファイルの作成や編集を行うためのソフトウェアの一つであるVisual Studio Code(vscode)を使用します。

まだvscodeのインストールをしていない方は、前回の記事を参考にしてみてね。

Dockerで分析環境を構築しよう④

前回と同様のDokcerfileがあるフォルダを作成する

ここでは、前回と同様のDokcerfileがあるフォルダを作成していきます。

中身としては、以下のようなものとなっています。

まず、Dockerfile, requirements.text, test.py があります。

Dockerfileの中身は以下の通りです。

FROM python:3.8

# pythonのイメージ上で/var/wwwディレクトリを作成

RUN mkdir /var/www

# 作業ディレクトリとして/var/wwwを指定

WORKDIR /var/www

# ローカルにあるrequirements.txtを作業ディレクトリ(/var/www)内にコピー

COPY requirements.txt ./

# Pythonライブラリインストール

RUN pip install --upgrade pip && \

pip install -r requirements.txt

requirement.txtの中身は以下の通りです。

faker

test.pyの中身は以下の通りです。

from faker import Faker

fake = Faker('ja_JP')

# str型の住所が出力

print(fake.address())

こちらが作成できたら、docker-composeを利用していきます!

尚、詳しい中身の説明が知りたい方は前回の記事をご覧ください!

Dockerで分析環境を構築しよう④

前回使用したdockerコマンドを参考にdocker-compose.ymlを作成しコードを記載する

その後、前回起動する際に使ったコマンドを参考にdocker-compose.ymlを作成し、コードを記載していきます。

まずは、docker-compose.ymlを作成します。

その後docker-compose.ymlにコードを記載します。

version: "3"

services:

python_faker:

build: .

container_name: python_faker

volumes:

- ./:/var/www/

tty: truevoluems,

上記のコードを解説します!

まず、一番ネストが浅いものでversionとserviceがあります。(他にもnetworksやvolumesなどがありますが今回は使用していません。)

  • versionはdocker-composeを利用する上でどのバージョンを使うかを指定するものです。(迷ったらとりあえず”3″にするとバグが発生しにくいです)
  • servicesは、docker-composeを利用する際に起動させるコンテナ群です。今回は,コンテナを一つ立てるので、python_faker(サービス名はなんでもよい)というサービスを立てています。

次に、servicesのサービスであるpython_fakerの中をみていきます。

こちらには、build, container_name, volumes, ttyがあります。

  • buildはdocker buildコマンドのことで、buildをする場所をしています。
  • container_nameは、起動する際のコンテナ名を指定しています。
  • volumesは、コンテナを起動する際に、指定したローカルのファイルをコンテナと共有しています。
  • ttyは、dockerのコマンドオプションの-ttyのことで、ターミナルと会話できるようにしています。

とりあえず、ここでは前回のコマンドをdocker-compose.ymlにまとめることができるとだけ抑えるだけで大丈夫です!

詳しいdocker-comopse.ymlの記載方法は下記の記事を参考にしてください!

Docker Compose – docker-compose.yml リファレンス – Qiita

docker-composeを利用しコンテナを起動する

準備ができたことで、docker-composeコマンドを打ちます!

vscodeでターミナルを開き、docker-comopse up -d と打ってください!

(macの場合、vscodeでターミナルを起動するには「shift + ctrl + @」を同時押しをします)

docker-compose up -d

ここでは、dockerコマンドでいうDockerfileをbuildし、その後docker runでコンテナを起動させるようにします!

また、今回は -dでdocker コンテナをデダッチドモードで起動させます。

docker コンテナが立ちあがっているか確認します!

docker ps

確認ができたところで コンテナの中に入り、test.pyを実行します!

docker exec -it python_faker bash
python test.py

fこれにて、docker-composeを利用し簡単にDockerfileからコンテナを起動させることができました!

 

今回はあまり触れませんでしたが、docker-composeコマンドに関しては下記の記事を参考にするといいかもしれません!

docker-compose コマンドまとめ – Qiita

まとめ

今回は、

  • docker-composeとはなにか理解しよう!
  • docker-comcoposeを使ってみよう!

といった流れをおこなっていきました!

次回は、いよいよAWSを使いクラウド上でjupyternotebookの分析環境を構築していきます!

クラウド上で分析できるようになることで、分析するための処理時間が長い場合はクラウドのスペックを変えるなどし処理性能を上げ効率的な分析ができるようになります!

Dockerのシリーズを通し、データサイエンティストへの一歩を歩みましょう!

WineyTradeの記事にでてくるコードはLINE@にて配布をしております!
ソースコードを見逃したくない方は、今のうちにLINE登録をしておいてくださいね!

友だち追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA