ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Dockerでpython3の環境を作る

(2022-09-18 初稿)

以下のとおり、Debian 11(Bullseye)でDockerをインストールした。

ここでは、インストールしたDockerを利用して、python3の環境を作った自分用のメモ。なお、本記事の内容はほぼ以下サイトと同じであるので、まずはそちらを。

ファイル構成

以下のとおり、ディレクトリとファイルを配置する。

doc-pyのディレクトリ名は、好きな名前で良い。

doc-py/
  ├ Dockerfile 
  ├ docker-compose.yml
  └ oopt
    └ sample.py

Dockerfile

以下のDockerfileを作成する。

FROM python:3
USER root
RUN apt-get update
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

docker-compose.yml

以下のdocker-compose.ymlを作成する。

version: '3'
services:
  python3:
    restart: always
    build: .
    container_name: 'python3'
    working_dir: '/root/'
    tty: true
    volumes:
      - ./opt:/root/opt

simple.py

テストようなので簡単なsimple.pyを作成する。

print(”Hello Docker Python World")

Dockerイメージの作成、コンテナのビルド、そしてコンテナの起動

イメージは、クラス。コンテナはインスタンスに例えられる。

$ cd doc-py/
$ docker compose up -d --build

上記コマンドでは、コンテナはバックグランドで動作している状態。

イメージの確認

$ docker image ls
REPOSITORY              TAG                       IMAGE ID       CREATED         SIZE
doc-py-python3          latest                    5e6af8f9d57d   37 hours ago    1.02GB

コンテナの確認

$ docker container ls
CONTAINER ID   IMAGE            COMMAND     CREATED          STATUS          PORTS     NAMES
05cd7c5dbdb4   doc-py-python3   "python3"   10 seconds ago   Up 10 seconds             python3

コンテナへの接続

$ docker compose exec python3 bash
root@05cd7c5dbdb4:~#  (プロンプトが変更)
root@05cd7c5dbdb4:~# python --version
Python 3.10.7

コンテナへモジュールのインストール

root@05cd7c5dbdb4:~# python -m pip install numpy
Collecting numpy
  Downloading numpy-1.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.1/17.1 MB 21.8 MB/s eta 0:00:00
Installing collected packages: numpy
Successfully installed numpy-1.23.3
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

最後の警告は、rootでの操作は勧めないとのことだが、仮想環境なので無視して良い。

コンテナへモジュールをインストールし、問題がなければDockerfileに追記するのが良い。

sample.pyの実行

doc-py/opt/sample ディレクトリに配置したsample.pyの実行

root@05cd7c5dbdb4:~# python ./opt/sample.py
Hello Docker World

自分で作成したスクリプトは、doc-py/opt/ ディレクトリ内に置く。

コンテナの操作

コンテナの切断

root@05cd7c5dbdb4:~# exit
$  

コンテナの削除

$ docker compose down
[+] Running 2/2
 ⠿ Container python3       Removed                                        10.3s
 ⠿ Network doc-py_default  Removed                                         0.1s

確認は以下のとおり。

$ docker container ls
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

コンテナの再利用

Dockerfileとdocker-compose.ymlでイメージがあるので、以下のコマンドを入力。

$ docker compose up -d
[+] Running 2/2
 ⠿ Network doc-py_default  Created                                         0.0s  ⠿ Container python3       Started                                         0.3s

イメージの操作

イメージの一覧

$ docker image ls
REPOSITORY              TAG                       IMAGE ID       CREATED         SIZE
doc-py-python3          latest                    5e6af8f9d57d   37 hours ago    1.02GB

イメージの削除

$ docker image rm imageid(上記の場合 5e6af8f9d57d )
Untagged: doc-py-python3:latest
Deleted: sha256:5e6af8f9d57ddb85bbb0918a92e10f2f03682ecd50e074fef08280c1a11874b9

 

以上、駆け足で紹介。また、何かわかったら追記予定。

関連ページ