Dockerfile 與映像管理
Dockerfile 最佳實踐、Python 優化與自訂映像建置。
🐍 Python Dockerfile
完美範本
核心內容:
- 多階段建置
- 映像大小優化
- 安全最佳實踐
- 快取策略
- 生產環境部署
從映像建立 Dockerfile
核心內容:
- 反向工程映像
- 映像層分析
- 重建 Dockerfile
- 映像優化
🛠️ 自訂環境
GCC 編譯環境
核心內容:
- GCC 容器化
- 編譯環境配置
- C/C++ 開發環境
- 跨版本測試
💡 Dockerfile 最佳實踐
多階段建置
# 建置階段
FROM python:3.9 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txt
# 運行階段
FROM python:3.9-slim
WORKDIR /app
# 只複製必要文件
COPY --from=builder /root/.local /root/.local
COPY . .
# 設定 PATH
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]
映像大小優化
FROM python:3.9-slim
# 使用 .dockerignore 排除不需要的文件
# 合併 RUN 指令減少層數
RUN apt-get update && \
apt-get install -y --no-install-recommends gcc && \
pip install --no-cache-dir -r requirements.txt && \
apt-get purge -y --auto-remove gcc && \
rm -rf /var/lib/apt/lists/*
# 使用 COPY 替代 ADD
COPY requirements.txt .
COPY . .
快取策略
# 先複製 requirements.txt,利用 Docker 快取
COPY requirements.txt .
RUN pip install -r requirements.txt
# 最後複製應用程式碼(經常變動)
COPY . .
安全最佳實踐
# 使用非 root 使用者
FROM python:3.9-slim
RUN useradd -m -u 1000 appuser
USER appuser
WORKDIR /home/appuser/app
COPY --chown=appuser:appuser . .
CMD ["python", "app.py"]
🔧 映像管理
標籤管理
# 建置並標籤
docker build -t myapp:1.0.0 .
docker build -t myapp:latest .
# 多個標籤
docker tag myapp:1.0.0 myapp:stable
docker tag myapp:1.0.0 registry.example.com/myapp:1.0.0
映像檢查
# 查看映像歷史
docker history myapp:latest
# 檢查映像層
docker inspect myapp:latest
# 映像大小分析
docker images myapp
清理映像
# 刪除懸空映像
docker image prune
# 刪除所有未使用映像
docker image prune -a
# 查看映像大小
docker system df
🚀 GCC 開發環境
Dockerfile 範例
FROM gcc:latest
WORKDIR /workspace
# 安裝開發工具
RUN apt-get update && apt-get install -y \
cmake \
gdb \
valgrind \
&& rm -rf /var/lib/apt/lists/*
# 複製程式碼
COPY . .
# 編譯
RUN g++ -std=c++17 -O3 -o app main.cpp
CMD ["./app"]
使用方式
# 建置映像
docker build -t gcc-dev .
# 編譯程式
docker run --rm -v $(pwd):/workspace gcc-dev g++ -std=c++17 -o app main.cpp
# 運行程式
docker run --rm -v $(pwd):/workspace gcc-dev ./app
最後更新: 2025-12-01