什麼是映像檔?
映像檔(Image) 是容器的「範本」,裡面包含執行應用程式所需的所有檔案、函式庫與設定。容器則是映像檔被「執行起來」的實體,可以把映像檔想像成「打包好的安裝光碟」,容器就是「安裝並開機後的系統」。
Containerfile(Dockerfile)
Containerfile 是一份描述「如何打造映像檔」的腳本,Podman 與 Docker 的語法完全相容(Docker 稱之為 Dockerfile)。範例:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]
常用指令說明:
FROM:基礎映像檔WORKDIR:設定容器內的工作目錄COPY:把本機檔案複製進映像檔RUN:在建置過程中執行指令(例如安裝套件)EXPOSE:宣告容器會用到的連接埠(僅供說明用途)CMD:容器啟動時預設執行的指令
建置映像檔
podman build -t myapp:latest .
-t:指定映像檔名稱與標籤(tag).:表示 Containerfile 所在的目錄(建置上下文)
建置完成後,可以用 podman images 確認映像檔是否成功產生,再用 podman run 執行它。
分層快取機制
Containerfile 每一行指令都會產生一層(layer),Podman 會快取沒有變動的層。建議把「不常變動的步驟(如安裝套件)」放在前面、「常變動的步驟(如複製程式碼)」放在後面,這樣修改程式碼後重新建置會快很多。
理解 Containerfile 後,你就能把自己的應用程式打包成可攜帶的映像檔了。