Docker 入門
Docker はじめの一歩
Docker で Python 実行環境の構築
次は,Python の実行環境を Docker で構築してみましょう.Python のバージョンに 3.13
を指定してイメージから実行環境を構築します.このとき -it
オプションは -i
がコンテナの標準出力を開き,-t
で tty(端末デバイス)を確保するという意味になります.また,bash
はコンテナで実行するコマンドです.つまり,次のコマンドでコンテナの端末に接続されることになります.結果の最後にプロンプトが表示されてコマンドの入力状態になっていることに注意してください.なお,root
は UNIX/Linux 環境における管理者のユーザ名です.
% docker run -it python:3.13 bash ⏎ Unable to find image 'python:3.13' locally 3.13: Pulling from library/python d1e404420307: Pull complete 9923852056eb: Pull complete 7bcc8bff74cb: Pull complete 997d2d68e2fc: Pull complete b8022fef72bf: Pull complete 7e583365591e: Pull complete 44bad67af72c: Pull complete Digest: sha256:b41c4877ed4d8a4d6e04f0b341b84f2bd384325816975b1ebf7a2f2e02b7acaa Status: Downloaded newer image for python:3.13 root@25de3f427188:/#
ルートディレクトリがカレントディレクトリになっています.ルートディレクトリにあるファイルやディレクトリの一覧を確認します.ls
コマンドの詳細はこちらで確認してください.
root@25de3f427188:/# ls ⏎
bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var
root@25de3f427188:/#
次に echo
コマンドで文字列を画面に表示しますが,その結果を画面ではなくファイルにリダイレクトします.
root@25de3f427188:/# echo "print('hello docker')" > hello.py ⏎
root@25de3f427188:/#
ファイル (hello.py) が作成されたことを確認します.
root@25de3f427188:/# ls ⏎ bin boot dev etc hello.py home lib media mnt opt proc root run sbin srv sys tmp usr var root@25de3f427188:/#
python
コマンドを使って hello.py を実行します.
root@25de3f427188:/# python hello.py ⏎
hello docker
root@25de3f427188:/#
次に,Python のインタプリタを起動します.インタプリタの中で変数 a
に値を代入し,その変数の中身を表示します.その後,exit()
で Python のインタプリタを終了します.最後に exit
コマンドでコンテナからログアウト(同時にコンテナを終了)します.
root@25de3f427188:/# python ⏎ Python 3.13.7 (main, Aug 15 2025, 22:58:00) [GCC 14.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> a = 10 ⏎ >>> print(a) ⏎ 10 >>> exit() ⏎ root@25de3f427188:/# exit ⏎ exit %
ローカル環境にダウンロード済みの Docke のイメージを一覧で表示します.
% docker image ls ⏎
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.13 5c5a62077b3b 3 weeks ago 1.12GB
hello-world latest ca9905c726f0 4 weeks ago 5.2kB
起動中のコンテナを一覧で表示しますが,起動中のコンテナは存在しません.
% docker container ls ⏎
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
終了したコンテナも含めてすべてのコンテナを一覧で表示します.ここで sleepy_germain
というコンテナは python:3.13
というイメージから生成されており,vigilant_curie
や lucid_mayer
というコンテナはイメージ hello-world
から生成されていることに注意してください.
% docker container ls -a ⏎ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 25de3f427188 python:3.13 "bash" 50 minutes ago Exited (0) 5 minutes ago sleepy_germain 81436562b438 hello-world "/hello" 51 minutes ago Exited (0) 7 minutes ago vigilant_curie 5ff2bd0fdf0d hello-world "/hello" 54 minutes ago Exited (0) 10 minutes ago lucid_mayer
もう一度,イメージ python:3.13
からコンテナを新規に構築します.作成されたコンテナは上の作業で作成したコンテナとは別のコンテナであることから,上の作業で作成した hello.py
というファイルは新たなコンテナには存在しないことに注意してください.
% docker run -it python:3.13 bash ⏎ root@3ca043d750df:/# ls ⏎ bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var root@3ca043d750df:/# exit ⏎ exit
コンテナの一覧を確認します.イメージ python:3.13
から生成されたコンテナが2個あることが確認できました.
% docker container ls -a ⏎ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ca043d750df python:3.13 "bash" 19 seconds ago Exited (0) 6 seconds ago sad_newton 25de3f427188 python:3.13 "bash" 51 minutes ago Exited (0) 50 minutes ago sleepy_germain 81436562b438 hello-world "/hello" 52 minutes ago Exited (0) 52 minutes ago vigilant_curie 5ff2bd0fdf0d hello-world "/hello" 55 minutes ago Exited (0) 55 minutes ago lucid_mayer
上の作業ではイメージからコンテナを新規に作成していました.次は,作成済みで終了したコンテナを再び起動し,そのコンテナをアタッチして /bin/bash にログインします.まず,コンテナの一覧を確認します.hello.py
を作成した sleepy_germain
コンテナがあることを確認します(実際の名前はコンテナを作成するたびに異なるのでその名前を確認してください).
% docker container ls -a ⏎ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ca043d750df python:3.13 "bash" About a minute ago Exited (0) About a minute ago sad_newton 25de3f427188 python:3.13 "bash" 52 minutes ago Exited (0) 51 minutes ago sleepy_germain 81436562b438 hello-world "/hello" 53 minutes ago Exited (0) 53 minutes ago vigilant_curie 5ff2bd0fdf0d hello-world "/hello" 56 minutes ago Exited (0) 56 minutes ago lucid_mayer
コンテナ sleepy_germain
を起動するには docker start
コマンドを利用します.
% docker start sleepy_germain ⏎
sleepy_germain
起動中のコンテナの一覧を確認すると sleepy_germain
コンテナが起動中であることが分かります.
% docker container ls ⏎
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
25de3f427188 python:3.13 "bash" 53 minutes ago Up 9 seconds sleepy_germain
コンテナにアタッチして /bin/bash にログインします.
% docker exec -it sleepy_germain /bin/bash ⏎
root@25de3f427188:/#
ls
コマンドで hello.py
があることを確認し,そのファイルを実行します.最後にコンテナからログアウトします.
root@25de3f427188:/# ls ⏎ bin boot dev etc hello.py home lib media mnt opt proc root run sbin srv sys tmp usr var root@25de3f427188:/# python hello.py ⏎ hello docker root@25de3f427188:/# exit ⏎ exit What's next: Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug sleepy_germain Learn more at https://docs.docker.com/go/debug-cli/
/bin/bash
からログアウトしましたが,コンテナ自体はまだ起動中であることが分かります.
% docker container ls ⏎
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
25de3f427188 python:3.13 "bash" 54 minutes ago Up 57 seconds sleepy_germain
docker container stop
コマンドでコンテナを終了させます.
% docker container stop sleepy_germain ⏎
sleepy_germain
起動中のコンテナがなくなったことが分かります.
% docker container ls ⏎
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
終了したコンテナも含めてすべてのコンテナを一覧で確認します.直前(6秒前)に sleepy_germain
コンテナが終了していたことが確認できました.
% docker container ls -a ⏎ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ca043d750df python:3.13 "bash" 3 minutes ago Exited (0) 3 minutes ago sad_newton 25de3f427188 python:3.13 "bash" 54 minutes ago Exited (137) 6 seconds ago sleepy_germain 81436562b438 hello-world "/hello" 55 minutes ago Exited (0) 55 minutes ago vigilant_curie 5ff2bd0fdf0d hello-world "/hello" 58 minutes ago Exited (0) 58 minutes ago lucid_mayer