使用 Docker 運行 Python:互動模式與腳本執行完整指南
更新日期: 2025 年 3 月 4 日
本文為 Docker 基本介紹系列文,第 5 篇:
- AMD64 與 ARM64 的全面解析:新手必讀指南
- 新手必看!如何在筆電安裝 Docker?完整架構選擇指南
- Docker 新手指南:從鏡像到容器,完整概念與操作教學
- Docker 進階實戰:Volume、Port Mapping 與 Docker Compose 完整指南
- 使用 Docker 運行 Python:互動模式與腳本執行完整指南 👈進度
閱讀完本系列,可前往 Docker 進階介紹 繼續閱讀進階內容
如果你是 Python 開發者,可能會遇到以下問題:
- 你的電腦沒有安裝 Python,但想快速測試 Python 指令?
- 想切換不同版本的 Python 來測試相容性,而不影響本機環境?
- 不想在本機安裝多餘的 Python 套件,避免環境污染?
- 希望確保 Python 程式可以在不同環境中穩定運行?
Docker 提供了一種輕量、快速且不影響本機環境的方式來運行 Python。
你可以透過 Docker 啟動一個Python 互動模式來即時執行 Python 指令,也可以讓容器運行你的 Python 腳本,實現與本機類似的開發體驗。
這篇文章會帶你學會:
✅ 如何使用 Docker 啟動 Python 互動模式(REPL)
✅ 如何使用 Docker 執行本機的 Python 腳本
✅ 如何讓 Docker 容器讀取你的 Python 檔案,並保持環境隔離
不論是 Python 初學者,還是希望提升開發效率的工程師,這篇指南都能幫助你快速掌握 Docker 運行 Python 的技巧!
使用 Docker 啟動 Python 互動模式(REPL)
什麼是 Python 互動模式?
Python 互動模式(REPL,全名 Read-Eval-Print Loop)是一種即時執行 Python 指令的模式,你可以輸入 Python 代碼,立即看到執行結果,就像這樣:
>>> print("Hello, Docker!")
Hello, Docker!
這種方式非常適合用來快速測試 Python 語法或函式,但如果你的電腦沒有安裝 Python,或想確保測試環境的乾淨與獨立性,就可以使用 Docker 來運行 Python 互動模式。
使用 Docker 啟動 Python 互動模式
基本指令
docker run -it --rm python
指令解析
指令部分 | 作用 |
---|---|
docker run | 啟動一個新的 Docker 容器 |
-it | 進入互動模式(interactive & terminal) |
--rm | 當容器停止時,自動刪除容器(不留下殘留的容器) |
python | 使用官方的 Python 鏡像,並啟動 Python 直譯器 |
這條指令會做什麼?
- 檢查是否已有 Python 鏡像:
- 如果你的本機沒有
python
鏡像,Docker 會從 Docker Hub 自動下載最新的 Python 鏡像。
- 如果你的本機沒有
- 啟動一個臨時的 Python 容器:
- 這個容器內部就像一個獨立的小型 Linux 環境,裡面有完整的 Python 執行環境。
- 進入 Python 互動模式:
- 你會看到
>>>
提示符號,然後可以輸入 Python 指令,例如:>>> import sys >>> print(sys.version)
- 你會看到
- 當你輸入
exit()
或按Ctrl+D
退出時:- 因為
--rm
參數,Docker 會自動刪除這個容器,不會在系統中留下任何多餘的檔案。
- 因為
如果你想保留容器,不讓它自動刪除,可以去掉 --rm
:
docker run -it python
這樣容器停止後仍然會保留,你可以用 docker ps -a
找到它,並重新啟動。
使用 Docker 執行 Python 腳本
讓容器執行 Python 腳本,而不是互動模式
如果你有一個 Python 腳本 script.py
,希望在 Docker 容器中執行,可以這樣做:
docker run --rm python python -c "print('Hello from Docker!')"
這條指令的作用是:
python -c "print('Hello from Docker!')"
:在容器內執行print('Hello from Docker!')
--rm
:執行完後刪除容器,不留下任何痕跡
在 Docker 容器內執行本機 Python 檔案
如果你的 script.py
存放在本機,想讓 Docker 容器執行它,可以使用 Volume 掛載(Volume Mounting):
docker run --rm -v $(pwd):/app -w /app python python script.py
先看最基本的 docker run
docker run python
這條指令的意思是: 👉 使用 Python 的 Docker 映像檔來啟動一個容器。
但是這樣跑起來,容器什麼都不會做,因為我們沒有給它指令。
加上 python script.py
docker run python python script.py
這條指令的意思是: 👉 啟動一個 Python 容器,然後在裡面執行 script.py
。
但有個問題: ❌ 容器裡面根本沒有 script.py
!
因為 Docker 容器是一個獨立的環境,不會自動帶入你電腦上的檔案。
用 -v $(PWD):/app
讓容器可以讀取你的檔案
docker run -v $(PWD):/app python python script.py
這裡的 -v $(PWD):/app
是: 👉 把你電腦的資料夾 (當前目錄 $(PWD)
) 掛載到容器內的 /app
資料夾。
這樣一來:
- ✅ 容器內的
/app
資料夾就會擁有你電腦上的所有檔案! - ✅
script.py
現在容器內也可以讀取了。
設定容器的工作目錄 -w /app
docker run -v $(PWD):/app -w /app python python script.py
這裡的 -w /app
是: 👉 設定容器的「當前資料夾」為 /app
。
這樣 Python 直接執行 script.py
,不需要寫完整路徑 /app/script.py
,更方便。
加上 --rm
讓容器跑完就刪除
docker run --rm -v $(pwd):/app -w /app python python script.py
這裡的 --rm
是: 👉 容器執行完畢後,自動刪除,不留下任何垃圾檔案。
這樣你的 Docker 環境不會堆積一堆沒用的容器。
最終的指令解釋
docker run --rm -v $(pwd):/app -w /app python python script.py
- 👉 啟動一個 Python 容器,然後執行
script.py
,執行完後自動刪除。 - ✅ 容器可以讀取你電腦的檔案(因為
-v $(pwd):/app
)。 - ✅ 容器內的當前目錄變成
/app
(因為-w /app
)。 - ✅ 容器跑完就自動刪除(因為
--rm
)。
用更簡單的比喻,這條指令就像:
- 租了一個臨時辦公室(啟動 Docker 容器)。
- 把你的筆記本、檔案帶進去(掛載你的當前目錄)。
- 讓工作地點在會議室(設定工作目錄
/app
)。 - 開始寫 Python 程式(執行
script.py
)。 - 工作結束,把辦公室歸還,完全不留痕跡(
--rm
自動刪除容器)。
總結
學到的重點
概念 | 說明 |
---|---|
docker run -it --rm python | 進入 Python 互動模式(REPL) |
docker run --rm python python -c "print('Hello')" | 直接執行 Python 指令 |
docker run --rm -v $(pwd):/app -w /app python python script.py | 在容器內執行本機 Python 腳本 |
docker run -it --rm python:3.8 | 使用特定版本的 Python |
現在你已經掌握了如何使用 Docker 來運行 Python,不論是 REPL 互動模式還是執行 Python 腳本,你都能輕鬆上手! 🚀
快打開終端機,試試這些指令吧!💪