(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
以上、駆け足で紹介。また、何かわかったら追記予定。
関連ページ