Python

【5分で出来る】Dockerを使ったPython環境を構築方法と勉強方法!

Docker×Python
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
本記事では、Dockerを使ってPython環境を構築していきます!仮想化技術の一つである”コンテナ”を使いこなせるようになると、様々な開発環境を楽にすぐに構築出来るようになりますので、ぜひ試してみましょう!またDockerの勉強法についても簡単にまとめていきます!

こんにちは!スタビジ編集部です!

最近IT業界でよく耳にするようになった「コンテナ」という技術!

ただ、言葉は知っていいてなんかすごいらしいけど、中身はよくわからない、、、という方が多いのではないでしょうか?

ロボたん
ロボたん
コンテナって最近よく聞くよね!だけど全然イメージがわかないな~
ウマたん
ウマたん
普段自分のPCだけで作業している人にはなじみがないかも、、、

ただ、コンテナを使うことでアプリの開発がすごく楽になるから知っていて損はない!

この記事では実際にDockerコンテナを使ってpython環境を作りながらコンテナに対するイメージを変えていきたいと思います!

Dockerコンテナとは

Dockerコンテナを作成する前に「コンテナとは?」「Dockerとは?」について解説していきます。

コンテナとは

コンテナ(コンテナ技術)」とはOSレベルの仮想化技術であり、複数のアプリケーションを単一のOS上で隔離して実行できるものです。

一般的な仮想化(ハイパーバイザー型)とコンテナ型の違いを簡単なイラストで表すと下図の感じです。

docker

コンテナ化したアプリはOS環境(カーネル)を共有しています。

そのため、従来の仮想マシンよりもリソース利用が抑えられるので、コンテナ化したアプリは軽量で高速に動作します。

ウマたん
ウマたん
コンテナは仮想化技術の一つ!軽量で高速に動作することが特徴!

Dockerとは

続いて「Docker」について見ていきましょう。

DockerはDocker社が開発しているコンテナ技術を利用したオープンソースのコンテナ管理ソフトです。

Dockerではコンテナのビルド、デプロイ、管理、監視などの機能を提供しています。

アプリケーションやサービスをコンテナ化して実行できて、このDockerで作成されたコンテナを「Dockerコンテナ」と呼びます。

DockerコンテナではDockerレジストリなどのリポジトリからベースイメージ(Dockerイメージ)を取得することで簡単にコンテナを起動することが出来ます。

docker
ウマたん
ウマたん
Dockerを利用することで簡単にコンテナを使うことが出来るんだね!

Dockerイメージの作成

ではDockerを使ってPython環境を構築していきましょう!

構築に当たって大きく2つのフェーズがあります!

まずは「Dockerイメージの作成」!ここでDockerを立ち上げる元を準備します!

Dockerエンジンをインストール

まずはご自身のPCにDockerエンジンをインストールします!

これをインストールすることで自分のPCでDockerコンテナを利用することが出来ます!

https://www.docker.com/products/docker-desktop

インストールしたらDocker Desktopを起動しましょう!

docker

Dockerfileの準備

続いて、Dockerコンテナの元になるDockerイメージ、その設計書となる「Dockerfile」を準備していきましょう!

まずは適当な場所に実行場所となるDocker用のフォルダを準備し、Dockerfileを作成しましょう!(今回はwindows10環境で実行しています!)

docker

続いてDockerfileの中身を書いていきます!

docker

一見難しそうですが内容は単純です!ここでは基本の「FROM」と「RUN」を押さえておきましょう!

FROM python:3

FROMコマンドでは、コンテナのベースイメージを選択していますが、ざっくりいうとOSを選択しています!

普段だと「ubuntu」や「centos」といったベースイメージを選択することが一般的です

なので、例えばubuntuのベースイメージを選択してその上にpythonをインストールするということも可能です!

ただ、いちいちOSとpythonのバージョンの互換性をチェックしてインストールするのは面倒なので、今回はあらかじめ公式が用意しているpythonイメージを使います!

そうすることですぐにpythonがインストールされた環境を利用できます!ちなみに「python:3」を選択した場合、OSはDebianのようです!

RUN ~

RUNコマンドはベースイメージで出来上がったコンテナに対して実行する命令を記述する、いわば初期設定のようなものです!

例えば、「○○をインストール」と記述するとコンテナが立ち上がった段階で、コンテナに〇〇がインストールされています!

ウマたん
ウマたん
他にもDockerfileでいろいろな記述することで、Dockerコンテナに最初から好きな設定が出来ます!

他のDockerfileのコマンドを調べてみよう!

コンテナイメージの作成

では用意したDockerfileからコンテナの元になるコンテナイメージを作成しましょう!

今のdockerレポジトリにあるイメージを確認しましょう!Docker Desktopの「Images」から確認できます!

docker

dockerfileからdockerイメージを作成します!dockerfileのある場所で下記のコマンドを実行します

「docker build -t コンテナ名 .」

docker

このコマンドで現在のディレクトリ(.)にあるdockerfileを探して実行します!

各コマンドが順番に実行されていることがわかります!

docker

実行が終わるとDockerイメージが作成されます、dockerレポジトリの中身を見てみましょう!

docker
ウマたん
ウマたん
Dockerイメージを作成して第一段階終了!あとはこのイメージからコンテナを起動していくよ!

コンテナでPython環境作成

ここでは前のフェーズで作ったDockerイメージからDockerコンテナを起動していきます!

コンテナ起動

作成したDockerfileからコンテナを起動します!

「docker container run -it dockerイメージ名」で実行!

docker

dockerイメージからdockerコンテナを作成し、そのコンテナの中に入っています!pythonが起動されていますね!(「quit()」か「exit()」と打つとコンテナから抜けられます!)

コンテナ一覧を見てみるとコンテナが作成されたことがわかります(Docker Desktop「Containers/App」でも確認できます!)

docker

コンテナをいじってみる

今度はpythonは起動せずにコンテナに入ります!

「docker container exec -it コンテナID /bin/bash」と入力してみましょう!

docker

コンテナの中に入りました!pythonがインストールされているのがわかります!

ではこの環境で行列の掛け算をするpythonのアプリを実行したいと思います!

docker

このpythonアプリを実行します・・・エラーになります

docker

このコンテナにはnumpyをインストールしていないので、エラーになるんですね

ではnumpyをインストールして再度実行してみます!

docker

実行されて計算結果が出力されています!

このように、コンテナを立ち上げた後も必要なツールのインストールなど環境を拡張することも簡単にできます!

新しいコンテナをDockerイメージにする

今のコンテナはnumpyをインストールされた環境です!

DockerではこのコンテナをDockerイメージに戻すこともできます!

一度コンテナから出て、「docker commit コンテナ名 コンテナイメージ名:タグ」を実行するとそのコンテナのコンテナイメージを作成できます!

docker

コンテナイメージの一覧を見てみましょう!

docker

今回はわかりやすく「docker_python」でコンテナイメージ名を統一しました!

新しい方(ver2)の方は前のもの(latest)に比べて、容量が多いですね!

numpyをインストールしたりsample.pyを作成した分が反映されているのがわかります!

では、新しいコンテナイメージでコンテナを起動してみましょう!

docker

先ほど作ったsample.pyがありnumpyでの計算も実行されています!

このようにコンテナで環境を作ってコンテナイメージにすることで、いろんな環境構築を試すことが出来ます!

また、コンテナで試した後でインストールして大丈夫なものを最初のDockerfileのRUNコマンドにまとめることもあります!

ウマたん
ウマたん
コンテナで自分だけのpython環境を作ってみよう!

Dockerの勉強方法

Dockerは比較的新しい技術ですので今のうちに勉強しておくとよいでしょう!

Dockerを学ぶのにおすすめなのはUdemyの以下の講座!

米国AI開発者がゼロから教えるDocker講座

Udemy Docker
【オススメ度】
【講師】データサイエンティスト
【時間】8時間
【レベル】初級~中級

チームでの開発環境を構築する上でおさえておきたいのが、Docker

従来の分析・開発環境は、各自がローカルに持っていたり共有サーバーに持っていたり、場所が違えば環境が変わり、環境を整えるのが面倒でした。

それがこのDockerを使うことで他人と共有、PJごとに共有、することが容易になったのです。

ただなかなか分かりやすい教材がないなか、米国AI開発者のかめさんのこの動画は素晴らしい!

Dockerを学ぶならまず見ておきたい教材です!

\30日以内なら返金無料/このコースを見てみる

非常に分かりやすくDockerについて教えてくれます。

この講座をやれば一通りDockerについては理解が深まると思います。

ウマたん
ウマたん
とってもわかりやすいよ!

ただDockerだけできても意味がありません。

プログラミングやデータサイエンスについても一緒に勉強していきましょう!

プログラミングの勉強 順番
プログラミング言語を勉強する順番はこれだ!勉強方法と一緒に解説!当サイト【スタビジ】の本記事では、プログラミング言語の勉強方法をプログラミングの勉強を挫折しながらも試行錯誤して継続してきた僕がまとめていきます。今振り返った時に感じるプログラミング学習の順番を解説していきますので是非参考にしてみてくださいね!...
【5分で分かる】データサイエンティストに必要なスキルと独学勉強ロードマップ!当サイト【スタビジ】の本記事では、データサイエンティストに求められるスキルとそれを身に付けるための勉強法について徹底的にまとめていきます!入門者でも、しっかりデータサイエンティストについて理解しある程度独学で駆け出しの状態までいけることを目指します。...

Dockerを使ったpython環境構築 まとめ

ここまでDockerを使ったpythonの環境構築についてその手順をお伝えしました!

コンテナは一見難しそうですが、実際に触ってみると簡単にpython環境を作れることがわかると思います!

またコンテナを改造したらまた新しいDockerイメージとして作ることで、自分の環境をいろんな人に渡すこともできます!

こうしていろんな環境を手軽に使えるのがコンテナの良さなので、ぜひ試してみてください!

ロボたん
ロボたん
コンテナって最初は難しいと思ってたけど意外と何とかなるかも!
ウマたん
ウマたん
失敗してもまた作り直せばいいのもコンテナの魅力!何度もトライしてみよう!

コンテナの土台となるLinuxについて勉強したい方は、以下の記事で詳しくまとめてありますので、是非チェックしてみてください。

Linux
【Linux勉強ロードマップ】独学勉強法とおすすめの学習サイト紹介当サイト【スタビジ】の本記事では、Linuxの独学勉強法とおすすめ学習サイトの紹介していきます!普段Googleで調べものをするくらい程度だと、あまり馴染みのないLinux!サーバーの運用やアプリ開発で必要になってくるので、ぜひマスターしていきましょう!...

pythonの勉強法については以下の記事で詳しくまとめてありますので、是非見てください!

Python独学勉強法
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...

構築したPython環境でAIやデータ分析をしてみたいという方は当サイト「スタビジ」が提供するスタビジアカデミーというサービスで体系的に学ぶことが可能ですので是非参考にしてみてください!

AIデータサイエンス特化スクール「スタアカ」

スタアカトップ
【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組み合わせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

当メディアが運営するスクールです。

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!

Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら