米国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フォルダの下に環境を作成する。
そしてここはマウントしているのでhostにファイルが作成される。
ここで注意!!
なので、hostで情報を様々なコンテナで共有したい場合にはマウントを作成する。
最後に
詳しく知りたい方や図解で理解を行いたい方は是非かめさんの動画を参考にしていただければと思います。
GW期間中やかめさんのTwitterで定期的に割引(30%OFF)が行われていますので、チェックするようにしていただければと思います。