[Docker]軽量python環境を爆速で作る

軽量python環境を爆速で作成してみる。

関連記事

環境

macOS Ventura 13.3.1 (Chip: Apple M1)

軽量python環境を爆速で作る

ちょっと今pythonプログラムを動かしたい、みたいなことが何度かあるので、手順を記載する。

イメージタグの確認

dockerhubの下記ページからイメージタグを確認する。

https://hub.docker.com/_/python/tags

ここでポイントは、”alpine”という文字が含まれるものを見つけること。

フルのpythonイメージは数百MB程のサイズに対し、alpineは10数MB程度で軽量とされている。

“alpine”と検索バーに入力して検索してみる。

その中から、とりあえず、”3.XX.XX-alpine”(3.XX.XXはpythonのバージョン)を見つける。

ここでは、”3.12.6-alpine”を使用することとする。

コンテナの作成

Terminalを開いて、下記のように実行する。”python:”の後に続くタグ名は前の手順で確認したタグ名に置き換える。

mkdir -m777 ~/pythonwork
docker run -it -v ~/pythonwork:/work -w=/work --rm python:3.12.6-alpine /bin/sh 

(実行例)

 $ mkdir -m777 ~/pythonwork
 $ docker run -it -v ~/pythonwork:/work -w=/work --rm python:3.12.6-alpine /bin/sh 
Unable to find image 'python:3.12.6-alpine' locally
3.12.6-alpine: Pulling from library/python
cf04c63912e1: Pull complete 
f0d3d23155cb: Pull complete 
72912374a9be: Pull complete 
a40a09e513fc: Pull complete 
Digest: sha256:7130f75b1bb16c7c5d802782131b4024fe3d7a87ce7d936e8948c2d2e0180bc4
Status: Downloaded newer image for python:3.12.6-alpine
/work # 
/work # python
Python 3.12.6 (main, Sep 12 2024, 23:14:20) [GCC 13.2.1 20240309] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

これでpython3.12.6が動くはず。

動作確認

まずはpythonと打って、対話モードで確認。

/work # python
Python 3.12.6 (main, Sep 12 2024, 23:14:20) [GCC 13.2.1 20240309] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> print("Hello World")
Hello World
>>> 

最後に~/pythonworkフォルダにpythonファイルを配置して実行してみる。

エディタで作成してファインダーから配置してもいいし、viコマンド等で作成してもよい。

配置したファイルを、”test.py”とすると、下記で実行する。

/work # python test.py 
Hello World
/work # 

必要であれば、pipでライブラリをインストールして良い。

/work # pip install numpy
Collecting numpy
  Downloading numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl.metadata (62 kB)
Downloading numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl (14.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.2/14.2 MB 8.7 MB/s eta 0:00:00
Installing collected packages: numpy
Successfully installed numpy-2.1.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable.It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
/work # 
/work # python
Python 3.12.6 (main, Sep 12 2024, 23:14:20) [GCC 13.2.1 20240309] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import numpy
>>> a = numpy.array(["A","B","C"])
>>> a
array(['A', 'B', 'C'], dtype='<U1')
>>> 

補足

上記の手順で作成したコンテナはexitして抜けるとコンテナは削除される。

削除されたくない場合は、docker run した際の、”–rm”を抜いて実行する。

以上。