【初心者向け】pythonでプログラミングを始める!Dockerでの開発環境構築

はじめに

プログラミングを始ようとして、どんなプログラミング言語がおすすめなのか調べてみるとpythonが挙げられているのをよく見ます。
pythonは簡単な処理やWEBアプリケーションから人口知能やデータ分析といった、幅広い分野で利用されています。
そのため、プログラマーの求人市場でもpythonが上位に入っていますので、将来性もある言語だといえます。
業務で使わないまでも、手軽に書ける面もあるので普段の作業を効率化したい際のちょっとしたプログラムなんかもpythonで書けます。
今回はそんなpythonをDocker上で実行できるようにする方法についてまとめていきます。
動作環境

 Windows10

 Docker

 python

Dockerについて

pythonの実行環境は仮想環境であるDockerのコンテナ上に作成します。

インストール方法は以下の記事で紹介しています。
関連記事

はじめに プログラミングを行う際に実行環境を構築する必要がありますが、普段利用しているローカルPCに直接インストールしてしまっては、トライアンドエラーを繰り返すうちに不要なアプリケーションが積み重なり動作が不安定にな[…]

また、DockerはWindows TerminalのPowerShellで行います。
こちらの記事でWindows Terminalのインストール方法も紹介していますので良ければ参照してください。
関連記事

はじめに Windows環境でLinuxのコマンドが利用できるWSL2についてインストールおよび利用方法を説明します。 Linuxコマンドが使えるようになると、様々なプログラミング言語や開発に利用できますので非常に[…]

python実行環境のDockerコンテナを準備

まずは、Dockerコンテナを作成するためにPython実行環境のイメージをダウンロードします。

Windows Terminalを起動し、PowerShellから以下のコマンドを実行します。

docker pull python:latest

「latest」は最新バージョンのイメージを取得するように指定しています。

実行するとイメージのダウンロードが始まります。

以下のコマンドを実行すると、ダウンロードしたイメージのリストが表示されます。

docker images

また、Docker Desktopからもイメージが追加されていることが確認できます。

今のままだとコンテナイメージをダウンロードしただけなので、以下のコマンドでコンテナを起動します。

docker run -it --name pytest python:latest /bin/bash

docker run でコンテナを起動します。その際に“pytest”という名前を付けています。
この名前については任意で付けることができます。

実行すると以下のようにプロンプトがrootに変わります。
これは現在、作成したコンテナにrootでログインしていることを示しています。

OSとインストールされているpythonのバージョンを確認してみます。

cat /etc/issue #OSバージョンの確認
cat /etc/os-release

python -V #pythonバージョンの確認

バージョン確認した結果、OSがDebianでPythonのバージョンが3.10.8でした。

これでpythonの実行環境のコンテナを準備することができました。

Pythonの実行

ここまででPython実行環境が準備できました。

ですが、今のままだとまっさらなDebianOSの上にPythonがインストールされているだけなので、エディターとしてvimをインストールしておきます。

apt-get update #パッケージの最新化
apt-get install -y vim #vimインストール

では、pythonを実行するためのプログラムを書いてみたいと思います。

まずは、プログラムファイルを保存するフォルダに移動します。

cd ~ #rootユーザーのディレクトリへ移動

次に、以下のコマンドを打ちpythonのプログラムファイルを作成します。

vi test.py #test.pyというファイル名でvimエディタを起動

コマンドを実行すると以下のような画面になります。

この状態で「i」を入力するとテキスト入力が可能となります。

vimはキーボード入力のみで操作が可能なテキストエディターです。

初期状態から「i」を入力することでテキスト編集が可能となり、「Esc」を入力すると範囲選択やコピー、ファイルの保存が行えます。
キーボードだけで操作ができるのでマウスに持ち変える必要がないことから、あえてVimを使う人も多いです。

テキスト入力できるようになったら、以下のpythonのプログラムコードを入力します。

print("Hello World")
pythonのコードが入力できたら、「Esc」キーを押してファイルを保存します。
ファイルの保存は「:w」を入力してエンターキーです。
保存ができたら「:q」をを入力してエンターキーを押すことでコマンドラインに戻ることができます。

※ファイルを保存するときに「:wq」と入力すると、保存してそのままコマンドラインに戻ることができます。

ここで、ファイルができたことを確認してみましょう。

以下のlsコマンドで現在のフォルダ内に存在するファイルリストを確認することができます。

ls

ついでにファイルの中身も確認してみましょう。catコマンドを利用すると確認可能です。

cat test.py

さて、それでは実際にpythonのコードを実行してみましょう。
以下のコマンドを入力することで、実行することが可能です。

python test.py

コマンドを実行すると以下のようになります。

“Hello World”がコマンドラインに出力されました。先ほどのtest.pyに記述したprintというのは標準出力(この場合はコマンドライン)に文字列を出力するという命令でした。

これで、実際にpythonの実行環境を簡単に作成することができました。

Docker Hubについて

さて、今回はlatestを指定することでpythonの最新バージョンをダウンロードしましたが、このコンテナイメージはどこからダウンロードしてきたのでしょうか。

それは、コンテナイメージを集めて公開しているDocker Hubというところからダウンロードしてきています。

上記のサイトで、Pythonと入れて検索をするとPython公式によってあらかじめ実行環境を準備したイメージがアップロードされています。

ここに公開されているコンテナイメージをpullすることで各端末にダウンロードすることができます。

まとめ

Pythonの実行環境としてDocker Hubからコンテナイメージをダウンロードし、実際にpythonのコードを実行しました。
これで特にPythonの環境構築のために様々なアプリケーションをインストールする必要がなくなりました。
今回はPythonを例にコンテナを作成しましたが、ほかのプログラミング言語、例えばPHPやそのフレームワークのLaravelといった環境もDockerで実行可能です。
また、プログラミング言語の実行環境だけでなく、ユーティリティソフトがインストールされた状態のコンテナもあります。
例えば、タスク管理を行うRedmineがインストールされたコンテナもあります。コンテナをダウンロードするだけでRedmineが利用開始できます。
コンテナの操作や、Pythonのプログラミング言語についてより詳しく知りたい方は以下のような書籍を参考にしてみてください。
スッキリわかるPython入門 (スッキリわかる入門シリーズ)
著者:国本大悟 (著), 須藤秋良 (著), 株式会社フレアリンク (監修)
出版社:インプレス
はじめての人・つまずいた人・納得したい人のための入門書。サクサク進めてしくみもバッチリ!プログラミングの「本質」を身に付け未来への道を切り拓こう!業務自動化、データサイエンス、人工知能、アプリ開発プログラマへの第一歩!出典:Amazon
入門 Python 3 第2版
著者:Bill Lubanovic (著), 鈴木 駿 (監修), 長尾 高弘 (翻訳)
出版社:オライリージャパン; 第2版
データサイエンスやウェブ開発、セキュリティなど、さまざまな分野で人気を獲得してきているPython。本書は、ベストセラー『入門 Python 3』の6年ぶりの改訂版で、プログラミング初級者を対象としたPythonの入門書です。プログラミングおよびPythonの基礎から、ウェブ、データベース、ネットワーク、並行処理といった応用まで、実践を見据えたPythonプログラミングをわかりやすく丁寧に説明します。Python 3.9に対応し、f文字列などの新機能も追加され大幅にボリュームアップしました。Pythonの機能をひと通り網羅し、リファレンスとしても便利です。出典:Amazon
たった1日で基本が身に付く! Docker/Kubernetes超入門
著者:伊藤 裕一 (著)
出版社:技術評論社
本書は、次世代のアプリケーションアーキテクチャとして注目されている「マイクロサービス」の技術基盤となるコンテナ技術「Docker」とコンテナオーケストレーション技術「Kubernetes」を取り上げ、Dockerの基本的な利用法、DockerfileやComposeの設計、コンテナのデータ永続化やCI/CD、Kubernetesによる複数コンテナの自動管理までを、一気に学習します。出典:Amazon