エンジニア データサイエンティスト

dockerでPythonの環境構築をする!データ分析環境「Jupyter Lab」を起動するまで!

2020年10月26日

dockerでPython環境構築

dockerでプログラミングの環境を作れることはわかったけど、どんな感じで作るんだろう?
実際に作る流れを見たいな。。

 

こんにちは、古賀です!

 

本記事では、

はてな

「dockerでデータ分析用Python環境構築」

について、お話します。

 

前回の記事で、dockerの概要についてお話しました。

docker簡単解説&インストール
dockerとは?dockerをわかりやすく簡単に説明&インストールする!

最近dockerってよく聞くけど、dockerって何をしてくれるものなんだろう? ネットで調べてみたけど、難しい用語ばっかで全然わからない。。   こんにちは、古賀です!   本記 ...

続きを見る

なんとなくdockerについて理解できたかもしれませんが、

dockerを使って実際に環境構築することで、さらに理解が深まると思います。

 

今回は、データサイエンティストがデータ分析をする環境を構築して、

「Jupyter Lab」(ブラウザ上で動作するプログラムの対話型実行環境)を起動するところまでお話します!

 

自己紹介が遅れましたが、

わたしは大学卒業後、上場IT企業に就職し、プログラマー、システムエンジニアとして

約10年間働いておりまして、現在フリーランスとして活動しております。

プロフィールの詳細はこちらです。

野球
プロフィール

こんにちは、古賀正雄です。現在36歳です。 簡単ではありますが、こちらのページで自己紹介とこのブログについてお話します。 高校時代 学生時代は主に野球をしていました。 進学先の高校も野球で選びました。 ...

続きを見る

 

※YouTubeに同内容を公開しております。

dockerでPythonの環境構築!

仕事

まず、今回どのような作業をするかをお話します!

Pythonの実行環境を作る方法は色々とありますが、今回やることは以下です。

  1. Linux系OS「Ubuntu」imageでコンテナを作成
  2. コンテナにPythonのセット品である「Anaconda」をインストール
  3. WEBブラウザから実行環境である「Jupyter Lab」の起動確認

この流れで進めていきます。

Linux系OS「Ubuntu」imageでコンテナを作成

はじめに「docker hub」に置いてある「Ubuntu」の「docker image」を使ってコンテナを作ります。

おさらいですが、

「docker image」はコンテナを作るためのテンプレートのようなもので、

「docker hub」は「docker image」をみんなで使えるように管理している場所です。

 

そこで、「Ubuntu」という「docker image」を取ってきてコンテナを作ります。

「Ubuntu」というのはLinux系のOSのことですが、

ここでLinuxのことをどうのこうの話すと頭が痛くなってきますので、割愛します!

 

覚えておいて欲しいことは、

dockerコンテナの中で色々と操作するために、

最初にLinux系のOSを入れる必要がある!

ということです。

今回は「Ubuntu」ですが、他にも「CentOS」などがありますので、好きなやつでも大丈夫です。

 

はじめから難しい話になってしまいましたが、

「最初に土台となるOSを指定する必要があるんだな。。」

くらいに思っておいてください!

コンテナにPythonのセット品である「Anaconda」をインストール

コンテナができたら次に「Anaconda」と呼ばれるものをインストールします。

 

「Anaconda」は、

「Python本体と、Pythonでよく利用されるライブラリをセットにしたPythonパッケージ」

です。

 

Pythonには、データ分析や機械学習をするための便利なライブラリが多くあります。

Python単体をインストールするだけでは、その便利なライブラリが使えません。

1つ1つ別々にインストールするのは非常に手間なので、

セット品である「Anaconda」をインストールします。

これがインストールできたら、環境構築はほぼ完了です。

WEBブラウザから実行環境である「Jupyter Lab」の起動確認

最後に「Jupyter Lab」を起動できるか確認します。

「Jupyter Lab」は、

「ブラウザ上で動作するプログラムの対話型実行環境」

のことです。

この「Jupyter Lab」上でコードを書いたり、

プログラムの実行結果を確認したりすることができます。

 

「Jupyter Lab」は「Anaconda」の中に含まれていますので、インストール作業は不要です。

起動確認をして、正しく環境構築できているか確認しましょう!

docker fileを使わないPython環境構築

PC

それでは環境構築作業をしていきましょう!

今回は「docker file」を使わないで、環境構築をしていきましょう!

 

前回の記事でお話した通り、

「docker file」は「docker  image」の設計書ですが、

  • 「docker  image」は「docker  hub」から取得できる
  • コンテナを作った後でもアプリをインストールできる

ので、環境構築するために必ず「docker file」が必要ということではありません。

以下の手順で進めていきます!

  1. 「docker hub」から「Ubuntu」imageを取得する
  2. 「Ubuntu」imageを使ってコンテナ作成&コンテナの中に入る
  3. コンテナの中で「Anaconda」をインストール
  4. WEBブラウザ上で「Jupyter Lab」の起動確認

「docker hub」から「Ubuntu」imageを取得する

まずは、前回の記事でお話したdockerをログインした状態にしましょう。

その後に続けて、「docker pull ubuntu」と入力します!

kogamasao@kogamasaonoMacBook-Pro ~ % docker pull ubuntu

これで「docker hub」から「Ubuntu」imageを取得することができました。

「docker images」というコマンドで取得したimageを確認することができます。

kogamasao@kogamasaonoMacBook-Pro ~ % docker images          
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              9140108b62dc        3 weeks ago         72.9MB

先程pullした「Ubuntu」imageが表示されています。

「Ubuntu」imageを使ってコンテナ作成&コンテナの中に入る

続いて取得してきた「Ubuntu」imageを使って、コンテナを作成します。

「docker run -p 8888:8888 -it ubuntu bash」と入力します。

kogamasao@kogamasaonoMacBook-Pro ~ % docker run -p 8888:8888 -it ubuntu bash
root@891c3c3e5f75:/#

これでコンテナを作成して、コンテナの中に入った状態になりました。

コマンドの説明をすると、

「run」は、「指定したimageからコンテナを作成して中に入る」コマンドです。

「-p 8888:8888」は、「自分のPCからdockerの中のJupyter Labへ接続するために必要な記述」と今は理解しておきましょう。

「Jupyter Lab」を使わない場合は、この記述は不要です。

「-it」と「bash」は、「dockerの中でコマンド入力するために必要な記述」と今は理解しておきましょう。

このあたりは深入りするとまた頭が痛くなってきますので、また別の機会にお話したいと思います。

 

1点補足ですが、先程「docker hub」から「Ubuntu」Imageをpullしてきましたが、

実はpullしてこなくても、「docker run」さえしておけば、勝手にimageを取得してくれます。

なので、あまりないかもしれませんが「docker image」だけ取得したい場合だけ

「pull」コマンドを使いましょう!

コンテナの中で「Anaconda」をインストール

次は「Anaconda」のインストールです。

ただ「Anaconda」をインストールする前に、

「Anaconda」のインストールファイルをコンテナの中に持ってこれるように「wget」というアプリをインストールする必要があります。

 

ちょっとわかりづらいかもしれませんが、インストール前の下準備を思ってください。

「apt-get update」と入力しましょう!

「今から取得するアプリを最新のものにします!」という意味です。

そこそこ時間掛かります。

root@891c3c3e5f75:/# apt-get update

続いて、

「apt-get install wget」と入力して、「wget」というアプリをインストールします!

これが「Anaconda」のインストールファイルを取ってこれるようにしてくれるアプリです。

root@891c3c3e5f75:/# apt-get install wget

途中で「Do you want to continue? [Y/n]」と聞かれますが、「y」を入力しましょう!

Do you want to continue? [Y/n] y

 

ようやく「Anaconda」のインストールですが、

インストールするバージョンを選びましょう。

「Anaconda アーカイブ」で検索すると、

https://repo.continuum.io/archive/

のページが表示されますが、このページに「Anaconda」のバージョンが並んでますので、

この一覧からインストールするバージョンを選びます。

 

今回は「Ubuntu」に対応しているLinux系の「Anaconda3-2020.07-Linux-x86_64.sh」をインストールすることにします。

先程インストールした「wget」と「Anaconda」のURLを使って、

「wget https://repo.continuum.io/archive/Anaconda3-2020.07-Linux-x86_64.sh」と入力します。

root@891c3c3e5f75:/# wget https://repo.continuum.io/archive/Anaconda3-2020.07-Linux-x86_64.sh

これでインストールファイルを取得してこれました。

このインストールファイルを使って、コンテナの中に「Anaconda」をインストールします!

「sh Anaconda3-2020.07-Linux-x86_64.sh」と入力します。

root@891c3c3e5f75:/# sh Anaconda3-2020.07-Linux-x86_64.sh

途中「Enterを押し続けてください」と言われるので、言われるがままに押し続けます。

Please, press ENTER to continue
>>> 

その後「yes,no」と聞かれるので、「yes」と入力します。

Please answer 'yes' or 'no':'
>>> yes

さらにその後「どこにインストールしますか?rootフォルダ直下で良い?」と聞かれるので、

今回は言われた通り「root」の下にインストールします。何も入力せずEnterを押します。

別の場所にインストールしたい場合は、パスを入力してEnterを押します。

※「opt」フォルダにインストールするのが一般的です。

Anaconda3 will now be installed into this location:
/root/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/root/anaconda3] >>> 

最後に「初期化処理をしますか?」と聞かれるので、「yes」と返しましょう。

Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes

これで「Anaconda」のインストールが完了です!

WEBブラウザ上で「Jupyter Lab」の起動確認

それでは最後に「Jupyter Lab」を起動してみましょう!

「root/anaconda3/bin/jupyter-lab --ip=0.0.0.0 --allow-root --LabApp.token=''」と入力します。

root@891c3c3e5f75:/# root/anaconda3/bin/jupyter-lab --ip=0.0.0.0 --allow-root --LabApp.token=''

そしてWEBブラウザのアドレスに、

「localhost:8888」と入力してアクセスしてみましょう!

※この「8888」は「docker run 」した時の左側に書いた「8888」です。
エラーが出る場合は別の数字を試してみてください。ポート「8888」が使用中の場合はエラーが出ます。

「Jupyter Lab」が起動できれば正しく環境構築ができています。

Jupyter Lab

コマンドについて説明すると、

「root/anaconda3/bin/jupyter-lab」は「Jupyter Lab」のファイルがある場所を指定しています。

※「パスを通す」と「jupyter-lab」だけの指定だけでも起動できますが、今回は説明を割愛します。

 

「--ip=0.0.0.0」は自分のPCから「Jupyter Lab」を起動する時に必要な記述と理解しておきましょう。

「--allow-root」は「root」というユーザの「Jupyter Lab」の使用を許可します、という意味です。

「Ubuntu」を作成すると、初期ユーザが「root」になるので、そのユーザに対して「Jupyter Lab」の使用を許可してあげます。

 

「--LabApp.token=''」は「Jupyter Lab」を起動したときにパスワード設定が必要なのですが、

このコマンドを指定しておくことで、そのパスワード設定処理を省略することができます。

今回は自分のPCの中だけで作業するので、このコマンドを指定しておきます。

 

以上が、dockerfileを使わないPython環境構築方法です!

dockerで使用するその他コマンド

コード

Python環境の構築はできましたが、作業終了の仕方も含めて、

その他必要なコマンドを紹介しておきます。

以下の処理方法は覚えておきましょう!

  • 「Jupyter Lab」の終了
  • dockerコンテナを抜ける
  • コンテナ一覧を表示
  • コンテナから「docker image」を作成
  • dockerコンテナの起動
  • dockerコンテナに入る
  • dockerコンテナの停止
  • dockerコンテナの削除
  • 「docker image」の削除
  • 自分のPC とコンテナ間でファイル共有する

「Jupyter Lab」の終了

「Jupyter Lab」の終了はターミナル上で「Ctrl+C」を押しましょう。

そうすると「終了しますか?」メッセージが表示されるので、「y」で「Jupyter Lab」が終了します。

Shutdown this notebook server (y/[n])? y

dockerコンテナを抜ける

dockerコンテナから抜ける時は「exit」と入力します。

これで自分のPC上の処理に戻ります。

root@891c3c3e5f75:/# exit

コンテナ一覧を表示

作成したコンテナの一覧を確認する場合は、「docker ps -a」と入力しましょう。

※「-a」を外すと現在起動中のコンテナのみ表示されます。

「コンテナID」の確認や「ステータス」を確認する時に使います。

kogamasao@kogamasaonoMacBook-Pro ~ % docker ps -a                              
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
891c3c3e5f75        ubuntu              "bash"              About an hour ago   Exited (0) 4 minutes ago                       confident_bohr

コンテナから「docker image」を作成

前回の記事でお話した通り、コンテナの中を更新した場合は、

そのコンテナで新しく「docker image」を作成することができます。

コンテナを抜けて、「docker commit コンテナID イメージ名」で作成できます。

※『イメージ名の「:」の後はバージョン情報を付与できます。』

kogamasao@kogamasaonoMacBook-Pro ~ % docker commit 891c3c3e5f75 newimage:latest

「docker images」で確認してみると、新しい「docker image」が作成されています。

kogamasao@kogamasaonoMacBook-Pro ~ % docker images                             
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
newimage            latest              2eb71a1a2fd7        47 seconds ago      3.98GB

この「docker image」を「docker hub」上にアップすることで(pushすると言います。)、

他の人がコンテナ上でいちいち「Anaconda」をインストールすることなく、

同じ実行環境を作ることができます。

dockerコンテナの起動

dockerコンテナの再度入る場合は、まず起動処理が必要です。

起動していない場合は、ステータスが「Exited」と表示されます。

kogamasao@kogamasaonoMacBook-Pro ~ % docker ps -a                              
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
891c3c3e5f75        ubuntu              "bash"              About an hour ago   Exited (0) 4 minutes ago                       confident_bohr

起動状態にするためには、「docker restart コンテナID」と入力します。

kogamasao@kogamasaonoMacBook-Pro ~ % docker restart 891c3c3e5f75

再度ステータスを確認すると、「Up」状態に変更されました。

kogamasao@kogamasaonoMacBook-Pro ~ % docker ps -a               
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
891c3c3e5f75        ubuntu              "bash"              About an hour ago   Up 28 seconds       0.0.0.0:8888->8888/tcp   confident_bohr

dockerコンテナに入る

コンテナを起動した後、dockerコンテナの中に入るためには「exec」コマンドを使います。

「docker run」の時と同じように、「docker exec -it コンテナID bash」と入力しましょう。

kogamasao@kogamasaonoMacBook-Pro ~ % docker exec -it 891c3c3e5f75 bash

これでコンテナの中に入れます。

「run」はコンテナ作成に加えて、「restart」と「exec」の処理を足したようなものです。

dockerコンテナの停止

dockerコンテナを「Up」状態から「Exited」状態にするには、「stop」を使います。

「docker stop コンテナID」です。

kogamasao@kogamasaonoMacBook-Pro ~ % docker stop 891c3c3e5f75

ステータスを確認すると「Exited」状態になっています。

kogamasao@kogamasaonoMacBook-Pro ~ % docker ps -a            
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
891c3c3e5f75        ubuntu              "bash"              About an hour ago   Exited (0) 46 seconds ago                       confident_bohr

dockerコンテナの削除

コンテナが不要になったら削除しましょう。

コンテナの削除は、「docker rm コンテナID」です。

kogamasao@kogamasaonoMacBook-Pro ~ % docker rm 891c3c3e5f75

「docker image」の削除

「docker image」の削除は「rmi」です。

「docker rmi イメージID」と入力しましょう。

kogamasao@kogamasaonoMacBook-Pro ~ % docker rmi 2eb71a1a2fd7

自分のPC とコンテナ間でファイル共有する

最後に「docker run」する時のオプション「-v」についてです。

「-v」を使うことで、自分のPCとコンテナ間でファイル共有することができます。

コンテナの中にPythonファイルやcsvデータを送ったり、

コンテナの中で作成したファイルを持ち帰ることができるようになります。

「docker run」のコマンドと一緒に、

「-v 自分のPCのフォルダ:コンテナ内のフォルダ」を付け加えることでファイル共有が可能になります。

kogamasao@kogamasaonoMacBook-Pro ~ % docker run -p 8888:8888 -v ~/Desktop/work:/ubuntuwork -it ubuntu bash

自分のPC内でファイルを作成したりすると、コンテナの中でその作成したファイルが見つかるはずです。

まとめ:dockerでPythonの環境構築

ここまでの話をまとめます。

まとめ

今回の環境構築手順は以下

  1. Linux系OS「Ubuntu」imageでコンテナを作成
  2. コンテナにPythonのセット品である「Anaconda」をインストール
  3. WEBブラウザから実行環境である「Jupyter Lab」の起動確認

「docker file」を使わずに,、コマンド入力のみで環境構築

  1. 「docker hub」から「Ubuntu」imageを取得する(pull)
  2. 「Ubuntu」imageを使ってコンテナ作成&コンテナの中に入る(run)
  3. コンテナの中で「Anaconda」をインストール(wget)
  4. WEBブラウザ上で「Jupyter Lab」の起動確認(jupyter-lab)

その他必要な処理は以下

  • 「Jupyter Lab」の終了(「Ctrl+C」)
  • dockerコンテナを抜ける(exit)
  • コンテナ一覧を表示(ps -a)
  • コンテナから「docker image」を作成(commit)
  • dockerコンテナの起動(restart)
  • dockerコンテナに入る(exec)
  • dockerコンテナの停止(stop)
  • dockerコンテナの削除(rm)
  • 「docker image」の削除(rmi)
  • 自分のPC とコンテナ間でファイル共有する(-v)

 

今回はデータサイエンティスト向けのPython環境を構築しました。

細かいところまで説明してしまうと、わけわからなくなってしまうので最低限の説明に留めました。

大まかな流れが理解できていれば大丈夫です!

 

「-it」とか、「-p」とか、「何をインストールすべきか?」とか、

言い出したらキリがありません。

 

必要なこと、わからないことは都度都度調べて試す必要があります。

これはdockerの環境構築に限らず、実際の仕事もそうです。

 

「質問力」の記事でも言いましたが、調べる力が非常に大事です。

理解を深めていくためにも、

手を動かして、疑問に思った事は調べたりして、

自分の成長に繋げていきましょう!

成長を加速させる質問力
質問力を鍛える!質問の仕方次第で得られる経験値が決まる!

  こんにちは、古賀です!   本記事では、 はてな 「質問力が自己成長に繋がる!」 「質問力を鍛えたい!質問の仕方は?」 ということについて、お話します。   このテー ...

続きを見る

 

次回は「docker file」を使った環境構築をしてみたいと思います。

現場では「docker file」を使う方法が推奨されているので、

今回と同じ環境を作成することで、

「docker file」の基本と理解を深めましょう!

 

※次の記事へ

dockerfileを使ってPython環境構築
dockerfileの基礎!dockerfileを使ってPython実行環境を構築!

dockerの環境構築はdockerfileを使わなくてもできるけど、 dockerfileを使って環境構築した方が良いんだよね? dockerfileを使った環境構築方法を知りたいな。。 &nbsp ...

続きを見る

おすすめ記事

eSportsプラットフォームSPFans 1

  こんにちは、古賀です!   本記事では、わたしが個人開発したWEBサービス はてな eSportsプラットフォーム「SPFans」 の紹介をします。   以前に紹介し ...

成長するエンジニア 2

  エンジニアになったけど、いまいち成長を感じられないなぁ。。 作業スピードも品質も平凡。 この先成長していけるんだろうか。。   こんにちは、古賀です!   エンジニア ...

道のり 3

※本記事は、各記事のまとめ記事です。   こんにちは、古賀です!   本記事では、 「プログラミング未経験者がエンジニアとして働き、 年収1000万に到達するまでの道のり」 をご説 ...

プログラミングスクール 4

  プログラミングを本格的に勉強して仕事に繋げていきたいけど、 プログラミングスクール多すぎる。。 どういう目線で選べばいいんだ。。   こんにちは、古賀です。   プロ ...

-エンジニア, データサイエンティスト
-, ,

Copyright© Koga Masao's LifeBlog , 2024 All Rights Reserved.