LoginSignup
2
4

More than 1 year has passed since last update.

ライブラリ追加によるdockerイメージの作成(Python, tensorflow, sklearn)

Posted at

目的

前回の記事でdockerをインストールしてベーシックな機械学習環境を構築することまで行いましたが、拾ってきたdockerイメージには必要なライブラリが入っていませんでした。そこで拾ってきたdockerイメージにライブラリを追加して新しいdockerイメージを作成することを行います。

実施内容概要

元となるdockerイメージ:tensorflow/tensorflow
追加するライブラリ:ScikitLearn、Pandas、imbalanced-learn
作成するdockerイメージ:my_ml

実施環境

MacBookAir  early 2020, RAM 8GB, CPU intel core i5 (非M1)
OS: macOS Big Sur Ver. 11.4

実施内容

dockerの起動

docker desktopのインストールとtensorflowのdockerイメージのダウンロードが完了していれば、以下のコマンドをterminalに入力するだけでdockerを起動できます。
-d を追加して、バックグラウンドで動作してもらうことにしました。
--name TF を追加して、コンテナの名前をTFと固定しました。

% docker run -d -it --name TF -p 8081:8888 tensorflow/tensorflow:latest-jupyter
注意

2回目以降、上記コマンドではTFはすでにあるとのエラーが出ます。この時はdocker desktopの再生ボタンを押せば良いみたいです。

スクリーンショット 2021-07-21 15.28.56.png

CLIの起動

docker desktopのCLIと書いてあるボタンをクリックするとコマンドラインが起動します。どうやらここがdockerコンテナ上のterminal相当の場所の様です。例えば、このコマンドライン上で「Python3」と入力するとPythonが起動します。(今は起動しません)

スクリーンショット 2021-07-21 15.27.55.png

pipによるライブラリのインストール

起動したコマンドライン上で以下のコマンドを実行してライブラリをインストールします。

$ pip install scikit-learn
$ pip install pandas
$ pip install imbalanced-learn

インストールの確認

インストール完了後、起動しているコマンドライン上で以下を入力し、Python3を起動させます。

$ Python3

その後、起動したPython3にて以下を実行してエラーが出ないことを確かめます。

>>> import pandas
>>> import sklearn
>>> import imbalanced-learn

その後一旦起動したCLIを終了させます。(terminalを左上のバッテンマークで消しておきます。)

terminalの再起動とdockerイメージ化

terminalを再度起動して、以下のコマンドを入力します。これで新たなdockerイメージの作成が完了しました!!

$ docker commit TF my_ml

commitの後の第一引数で起動中のコンテナを指定(今はTF)
第二引数で作成するイメージの名前をつける(今回はmy_ml)
イメージの名前には大文字は使えない様です。

$ docker images

と入力すれば、my_mlと記載されたイメージが追加されていることが確認できるはずです。

結果

例えば、以下のコマンドをterminal上で実行すれば、
my_mlというdockerイメージから、
MLという名前のdockerコンテナを作成できます。
そしてこれにはすでに元にしたtensorflowはもちろん、pandas、Scikit-Learnとimbalanced-learnも含まれています!

$ docker run -d -it --name ML -p 8088:8888 my_ml
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4