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

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

2020年10月31日

dockerfileを使ってPython環境構築

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

 

こんにちは、古賀です!

 

本記事では、

はてな

「dockerfileを使ってデータ分析用Python環境構築手順」

について、お話します。

 

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

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

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

続きを見る

 

そして前回の記事で、「docker file」を使わずにPythonの環境構築をしました。

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

dockerでプログラミングの環境を作れることはわかったけど、どんな感じで作るんだろう? 実際に作る流れを見たいな。。   こんにちは、古賀です!   本記事では、 はてな 「do ...

続きを見る

 

dockerの使い方が徐々にわかってきたかもしれませんが、

今回は「docker file」を使って、データ分析用のPython実行環境を作成しましょう!

 

実際の現場では複数人で開発作業をすることがほとんどなので、

コンテナの中身の内容がわかるように「docker file」を使って環境構築をすることが一般的です。

今回の記事で、

「docker file」の基礎知識と、

「docker file」を使って環境構築する流れを学びましょう!

 

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

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

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

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

野球
プロフィール

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

続きを見る

 

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

dockerfileの基礎!dockerfileに何を書く?

勉強

前々回の記事でもお話しましたが、

「docker file」は「docker image」の設計書

です。

「docker file」に書いた内容で、「docker image」を作ることができます。

 

今回「docker file」を使って環境構築していきますが、作成する環境は前回と同じです。

前回の作業内容はこちらでした。

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

※各内容の説明は前回の記事でお話しています。

 

前回は「Ubuntu」imageを使ってコンテナを作った後に、

コンテナに対して追加で「Anaconda」をインストールしましたが、

今回は「docker file」を使って「Ubuntu」に「Anaconda」をインストールした状態の

「docker image」を作ります。

 

「docker image」を作った後は、前回と同じです。

「docker run」をしてコンテナを作り、コンテナの中で「Jupyter Lab」を起動させます。

 

はてな

「docker file」に何を書けばいいのか?

というと、前回「Anaconda」をインストールするまで色々とコマンドを入力しました。

多少味付けは必要ですが、そのコマンドを書いていくだけです。

前回の作業が頭に入っていれば、そこまで難しく感じないはずです!

docker fileを使うPython環境構築

働く

では実際に「docker file」を使って、前回と同じ環境を構築していきましょう!

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

  1. 「docker file」を作成してフォルダの中に置く
  2. 「docker build」をして「docker image」を作成
  3. 作成した「docker image」を使ってコンテナ作成&コンテナの中に入る
  4. WEBブラウザ上で「Jupyter Lab」の起動確認

「docker file」を作成してフォルダの中に置く

まずは「docker file」を作成します。

「docker file」を作成したら、ほぼ今回の内容は終わりです。

メモ帳でも何でも良いので、テキストファイルを開きましょう。

 

そして、そのテキストファイルに以下の内容を書きましょう!

FROM ubuntu

RUN apt-get -y update && apt-get install -y wget

RUN wget https://repo.continuum.io/archive/Anaconda3-2020.07-Linux-x86_64.sh && \
sh Anaconda3-2020.07-Linux-x86_64.sh -b

コマンドを1つ1つ見ていきましょう。

 

はじめに「FROM ubuntu」とありますが、これはベースの「docker image」を指定しています。

前回もはじめに「docker run -it ubuntu bash」と入力して、

ベースの「docker image」を指定しましたが、それと同じです。

 

その後何をしたかと言うと、

「Anaconda」のインストールファイルを取得するためのアプリ「wget」をインストールしました。

その処理を表したのが、

「RUN apt-get -y update && apt-get install -y wget」

です。

 

「RUN」は「コマンドを入力する」という宣言です。

「&&」は続けてコマンド入力する時に使います。

「&&」ではなく「RUN」としても同様の処理になりますが、なるべく繋げて書くと良いです。

「apt-get -y update 」と「apt-get install -y wget」は前回お話した通り、

「アプリを最新にして、wgetアプリをインストール」しています。

 

ただ1か所「-y」というのを付け加えています。

前回「wget」のインストールを完了するまでに、「yes/no」と問われた場面があったと思います。

その時に「yesを返すようにしておく」ためのコマンドがこの「-y」です。

 

「RUN wget https://repo.continuum.io/archive/Anaconda3-2020.07-Linux-x86_64.sh && \
sh Anaconda3-2020.07-Linux-x86_64.sh -b」

はほとんど前回と変わりません。

「Anaconda」のアーカイブページからインストールファイルを「wget」で取得し、

その後「Anaconda」をインストールしています。

「-b」が付け加えられていますが、先程の「-y」と同じです。

「Enterを押せ」とか、「yes/no」を問われることがなくなる「batch」モードでインストールしています。

※別のオプションでインストール場所を指定することもできます。

 

このように、

はてな

「docker file」に何を書くべきか?

は、まず「docker file」を使わずに環境構築することで、何を書いていったらいいのかが分かります。

なので、いきなり「docker file」を使って環境構築をするのではなくて、

一度「docker file」を使わずに環境構築してみることをオススメします。

「-y」や「-b」のようなオプションを付けるかどうかは、

「docker file」を書く時にどんなオプションが必要かどうか、色々と調べてみましょう!

 

出来上がった「docker file」は、

名前を「Dockerfile」(拡張子なし)として、どこかのフォルダに入れておきます。

今回の例では、デスクトップにdockerというフォルダを作って、その中に入れておくこととします。

「docker build」をして「docker image」を作成

「dokcer file」を作成したら、ターミナルを起動して「docker」にログインした状態にしましょう。
※前々回の記事にログインまでの流れは記載してあります。

次に「dokcer file」が置いてあるフォルダまで移動しましょう。

フォルダの移動は、「cd フォルダ」で移動できます。

kogamasao@kogamasaonoMacBook-Pro ~ % cd Desktop/docker

念のため、移動したフォルダの中に作成した「Dockerfile」があるかどうか確認しておきます。

「ls」コマンドで確認できます。

kogamasao@kogamasaonoMacBook-Pro docker % ls
Dockerfile

「Dockerfile」を確認したら、「dokcer build .」と入力して「docker image」を作成します。
※「.」ではなく、パスを指定しても可です。

「docker build」は指定したフォルダの中から「Dockerfile」を探して、

その内容を基に「docker image」を作成してくれます。

この処理は時間が掛かります。

kogamasao@kogamasaonoMacBook-Pro docker % docker build .

処理が終わったら「docker image」が出来ているか、「docker images」で確認します。

kogamasao@kogamasaonoMacBook-Pro docker % docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
<none>              <none>              43fceb6bf2e3        About a minute ago   3.98GB

ちゃんとできています。

この後は前回の内容と同じです!

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

「docker image」が出来たら、「docker run」でコンテナを作成しましょう。

先程作成した「docker image ID」を指定します。

※下記は「-v」を使用して、ファイル共有を可能にした「docker run」です。

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

これでコンテナを作成して、コンテナの中に入ることができました。

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

最後に「Jupyter Lab」が起動できるか確認しましょう。

コマンドは前回と全く同じです。

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

WEBブラウザのURLに「localhost:8888」と入れて、

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

Jupyter Lab

以上が「docker file」を使った環境構築でした!

まとめ:dockerfileの基礎

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

まとめ

「docker file」は「docker image」の設計書

今回の作業内容は、

「docker file」を使って、
「Ubuntu」に「Anaconda」をインストールした状態の「docker image」を作る!

「docker file」に書く内容は、

「コマンド入力して環境構築した時のコマンドを書いていく!」

環境構築の流れは、

  1. 「docker file」を作成してフォルダの中に置く
  2. 「docker build」をして「docker image」を作成
  3. 作成した「docker image」を使ってコンテナ作成&コンテナの中に入る
  4. WEBブラウザ上で「Jupyter Lab」の起動確認

 

今回は単純な例でしたが、「docker file」を使っておくことで、

コンテナの中の構成がどうなっているかを確認することができます。

「docker file」はアプリをインストールするだけでなく、

コンテナの中にフォルダを作成しておくことも、自分のPCからファイルを送っておくことも可能です。

今回は単純なコマンド文だけでしたが、

「docker file」にコメント、説明文を残すことで構成を理解しやすくさせることが可能です。

コンテナの中が複雑になればなるほど、「docker file」の役割は大きくなります。

 

「docker file」から作成した「docker image」を「docker hub」に共有しておくことで、

周りの人が簡単に環境構築できて、その環境がどのような環境なのかを簡単に知ることができます。

 

複数人で開発作業をする場合は、

ぜひ「docker file」を使って環境構築することにチャレンジしてみましょう!

 

今回作成した環境を使って、

次回は「Jupyter Lab」について解説していきます。

Python機械学習の記事も書いていく予定です!

※次の記事へ

JupyterLab
JupyterLabとは?Python実行環境「JupyterLab」の概要と基本的な使い方!

  Pythonの実行環境「JupyterLab」が起動できるところまできたけど、 どういう風に使っていけばいいんだろう?? そもそも「JupyterLab」ってなんだ??   こ ...

続きを見る

おすすめ記事

eSportsプラットフォームSPFans 1

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

成長するエンジニア 2

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

道のり 3

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

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

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

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

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