使用 Docker 運行 Python:互動模式與腳本執行完整指南

更新日期: 2025 年 3 月 4 日

本文為 Docker 基本介紹系列文,第 5 篇:

  1. AMD64 與 ARM64 的全面解析:新手必讀指南
  2. 新手必看!如何在筆電安裝 Docker?完整架構選擇指南
  3. Docker 新手指南:從鏡像到容器,完整概念與操作教學
  4. Docker 進階實戰:Volume、Port Mapping 與 Docker Compose 完整指南
  5. 使用 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 直譯器

這條指令會做什麼?

  1. 檢查是否已有 Python 鏡像
    • 如果你的本機沒有 python 鏡像,Docker 會從 Docker Hub 自動下載最新的 Python 鏡像。
  2. 啟動一個臨時的 Python 容器
    • 這個容器內部就像一個獨立的小型 Linux 環境,裡面有完整的 Python 執行環境。
  3. 進入 Python 互動模式
    • 你會看到 >>> 提示符號,然後可以輸入 Python 指令,例如: >>> import sys >>> print(sys.version)
  4. 當你輸入 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)。

用更簡單的比喻,這條指令就像:

  1. 租了一個臨時辦公室(啟動 Docker 容器)。
  2. 把你的筆記本、檔案帶進去(掛載你的當前目錄)。
  3. 讓工作地點在會議室(設定工作目錄 /app)。
  4. 開始寫 Python 程式(執行 script.py)。
  5. 工作結束,把辦公室歸還,完全不留痕跡--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 腳本,你都能輕鬆上手! 🚀

快打開終端機,試試這些指令吧!💪

Similar Posts