見出し画像

米国AI開発者がゼロから教えるDocker講座⑥(かめさん)〜Dockerを使ってデータ解析環境を構築〜

初めまして、みずぺーといいます。
このnoteを機に初めて私を知った方のために、箇条書きで自己紹介を記述します。

  • 年齢:28歳

  • 出身:長崎

  • 大学:中堅国立大学

  • 専門:河川、河川計画、河道計画、河川環境

  • 転職回数:1回(建設(2年9か月)→IT系年収100万up(現職3か月))

  • IT系の資格:R5.4基本情報技術者試験合格💮

今日は業務でdockerを用いて物体検出環境を構築する業務があるので、そのための予習をしておきます。
あと、この記事だけでは正直理解することは難しいと思います。
そのため、詳しく知りたい方や図解で理解を行いたい方は是非かめさんの動画を参考にしていただければと思います。

ゴール設定

今回のゴール

なぜDockerを使うのか?

Hostにjupyter labやANACONDAを入れるのが大変だから。

  • 一回構築すればいつでも環境を構築できる

  • 自分以外にdockerによる環境を共有することが可能

  • hostの環境に左右されないから

Anacondaのインストール

最新バージョンはなぜかわからんがインストールできなかったので、古いバージョンをインストールしてみる。

FROM ubuntu:latest #updateは毎回忘れずに行う
RUN apt-get update && apt-get install -y \
    sudo \
    wget \
    vim
#.shのANACONDAをoptに入れる
WORKDIR /opt #ANACONDAのインストール  #copyとやってしまうといちいち戻さないないといけない 
RUN wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

とこんな感じでDockerfileを記載してみる。

ここまで記述できたらまずはDockerをbuildする

docker build .

ここでコンテナを作成できたらコンテナを起動させる。

docker run -it --rm <CONTAINER ID> bash

起動できたらworkdirに/optと書いていたので、/optフォルダにいる。

さらにそこにAnacondaを入れるように記載しているので、anacondaも入っているはずである。

anacondaファイルはshファイルなので、shコマンドで実行できる

sh <Anacondaのファイル>

ここで[yes/no]質問が出てくるが、yerを押し続ける。

その結果コンテナの中にanacondaがインストールされる。

pythonはそのままでは実行できない

root@8220d720da4f:/opt# python
bash: python: command not found

あれ??anacondaを入れたのにpythonが実行できない。。。だと。。。

と思った方もいるかと思います。

まずはanacondaのbinを通す必要があるんですよね。

root@8220d720da4f:/opt# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

現在のパスを見てみるとpathはルートの/sbinと/binとlocal/sbinのように通ってないことがわかります。

そのためanacondaのPATHを通してあげましょ。

root@8220d720da4f:/opt# export PATH=/opt/anaconda3/bin:$PATH
root@8220d720da4f:/opt# echo $PATH
/opt/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

これでPATHが通ったことが確認できました。

ここからdockerfileに記載していきましょ。

dockerfileへのこれまでの記載

インタラクティブなモードがあった

ここまでanacondaをインストールする際にインタラクティブな操作をしましたが、それはdockerfileに記載できません。

その際にはどうすればいいのか。

sh <anaconda.sh> -b -p /opt/anaconda3

こうすることによって、インタラクティブを削除してanaconda3をインストールすることができる。

Dockerfileの続き

FROM ubuntu:latest #updateは毎回忘れずに行う
RUN apt-get update && apt-get install -y \
    sudo \
    wget \
    vim
#.shのANACONDAをoptに入れる
WORKDIR /opt #ANACONDAのインストール  #copyとやってしまうといちいち戻さないないといけない 
RUN wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh && \
    sh /opt/Anaconda3-2020.11-Linux-x86_64.sh -b -p /opt/anaconda3 && \
    rm -f Anaconda3-2020.11-Linux-x86_64.sh
ENV PATH /opt/anaconda3/bin:$PATH

RUN pip install --upgrade pip
WORKDIR /
CMD ["jupyter","lab","--ip=0.0.0.0","--allow-root","--LabApp.token="]

jupyterとlabを分けて書くことでjupyterlabが起動する

●docker build .                                                                                                                                 【 main 】
[+] Building 539.6s (9/9) FINISHED                                                                                                                         
 => [internal] load build definition from Dockerfile                                                                                                  0.1s
 => => transferring dockerfile: 665B                                                                                                                  0.1s
 => [internal] load .dockerignore                                                                                                                     0.1s
 => => transferring context: 2B                                                                                                                       0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest                                                                                      0.0s
 => [1/6] FROM docker.io/library/ubuntu:latest                                                                                                        0.0s
 => CACHED [2/6] RUN apt-get update && apt-get install -y     sudo     wget     vim                                                                   0.0s
 => CACHED [3/6] WORKDIR /opt                                                                                                                         0.0s
 => [4/6] RUN wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh &&     sh /opt/Anaconda3-2020.11-Linux-x86_64.sh -b -p /opt  352.2s
 => [5/6] RUN pip install --upgrade pip                                                                                                              10.7s 
 => exporting to image                                                                                                                              176.1s 
 => => exporting layers                                                                                                                             175.9s 
 => => writing image sha256:a585227b42a2d4d2b2385cd117936ca54969bba55e39c18d2e38c2460cdf0cfe   

こんな感じでコンテナを作成することができた。

ブラウザ上でjupyter notebookを作成

docker run -p 8888:8888 -v ~/Desktop/ds_python/:work --name my-lab <CONTAINER ID>

こちらを8888でhostとcontainerを繋げる。

ブラウザ上で

localhost:8888

を実行することでjupyter notebookが立ち上がるようになる。

ターミナルでコマンドを入力

下記のようにブラウザで立ち上がっていることがわかる。

/workフォルダも存在

このようにworkフォルダの下に環境を作成する。
そしてここはマウントしているのでhostにファイルが作成される。

workにUntitledmipynbが作成

ここで注意!!

Untitled.ipynbはhost側で作成

なので、hostで情報を様々なコンテナで共有したい場合にはマウントを作成する。

最後に

詳しく知りたい方や図解で理解を行いたい方は是非かめさんの動画を参考にしていただければと思います。

GW期間中やかめさんのTwitterで定期的に割引(30%OFF)が行われていますので、チェックするようにしていただければと思います。

この記事が気に入ったらサポートをしてみませんか?