許多基礎映像預設使用 UTC 時區,造成日誌時間與本地時間誤差。在 Dockerfile 中,可以用 ENV TZ=Asia/Taipei 並安裝 tzdata 套件,但這會增加映像大小。更好的方式是將時區掛載進容器,例如 -v /etc/timezone:/etc/timezone:ro 以及 -v /etc/localtime:/etc/localtime:ro。但若追求可攜性,應讓應用程式讀取環境變數並輸出 UTC 時間,然後依賴前端轉換。
日誌應全數輸出至 stdout/stderr,不要寫入容器內部的檔案。Docker 與 K8s 都會自動收集這些輸出並轉交日誌後端。在 K8s Pod 中,若有多個容器,通常會加入一個 filebeat 或 fluent-bit sidecar 將日誌轉送到 Elasticsearch 或 Loki。2026 年的規範是使用 OpenTelemetry 標準,讓日誌、metrics 與 trace 全方面整合。
不能等到出問題才連進容器查看。定要架設完整的監控系統:Prometheus 抓取 metrics,Grafana 顯示儀表板,Alertmanager 發送警報。Docker 本身可以透過 cAdvisor 收集容器運作資料,在 K8s 中則由 kubelet 內建 metrics API。實作上,部署下列套件即可:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm upgrade --install kube-prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
並在應用程式中引入 Prometheus client library,暴露 /metrics 端點,Dockerfile 的 HEALTHCHECK 也可以透過該端點取得應用狀態。最後,建議設定 PodDisruptionBudget 與 Resource Quota,確保穩定性與公平分配資源。
2026 年的 Docker 與 Kubernetes 已經完全成熟,學習資源豐富,工具鏈完整。從撰寫一份乾淨的 Dockerfile、用 Compose 在本機啟動多容器環境,到透過 K8s 部署高可用服務,每一階段都有明確的模式可循。最重要的是,我們不應只把 Docker 當作一項工具,而應理解其背後的「封裝、隔離、不可變基礎設施」思維,並與現代 DevOps 文化相乘。
希望這份專為雅寶社區・頂客論壇撰寫的實戰指南,能幫助你站穩容器化部署的基礎。無論你的目標是成為 DevSecOps 工程師,還是想優化團隊交付流程,2026 年都是擁抱容器化的最佳時機。願你在 Docker 與 K8s 的世界中,航向更廣闊的雲原生之海。
歡迎在下方留言,分享您的想法、心得或疑問。所有留言都會透過 GitHub 帳號 進行驗證。