Skip to main content
Image Python 不是每次都自己從零寫,多數時候是站在別人建好的映像上(FROM)。挑映像看兩件事:可信度版本變體

可信度:三個層級

判斷可信的可信來源見 Docker Hub

Python 映像變體

以 Python 官方映像為例,撥下面幾個看差異:

Alpine 的雷

Alpine 用 musl libc 而非 glibc,造成:
  • PyPI 上預編譯的 binary wheel(manylinux,以 glibc 為目標)在 Alpine 上會退回原始碼編譯,要在映像內裝 gcc / musl-dev 與各套件的 C headers,build 時間大增、最終 image 未必更小。
  • numpy、scipy、pandas、PyTorch、TensorFlow 這類科學運算 / ML 套件,在 Alpine 上需自行編譯或用非官方包,不建議
  • Alpine 適合純 Python(無 C extension 相依)、對映像大小有強制要求、且願意接受 multi-stage 裡的編譯成本。

選版本的通則

  • 固定 major.minor tagpython:3.12-slim),別用 latestpython:3
  • 預設用 slim,要編譯原生套件時自己補 build 工具。
  • bookworm = Debian 12、bullseye = Debian 11,需要鎖定 Debian 版本時用帶代號的 tag(python:3.12-slim-bookworm)。

接下來

官方參考:hub.docker.com/_/pythonDocker Official Images