容器隔離模型:namespace、cgroup 與 rootfs 各管什麼
把容器拆回 Linux kernel 的三個基本機制,先建立能用來除錯的心智模型。
從 Container、Image、Dockerfile 的基礎概念,一路理解 OCI、Rootless Docker、Podman 與正式環境的安全取捨。
把容器拆回 Linux kernel 的三個基本機制,先建立能用來除錯的心智模型。
Rootless 讓容器內的 root 在 host 上仍以普通帳號運作,但不會讓 Linux 的權限邊界消失。
容器不是縮小版 VM,而是被 namespaces、cgroups 與 rootfs 限制的普通 Linux process。本文用原生 Linux 命令手工做出一個容器,再回頭解釋 Docker 與 Podman 各自用什麼架構達成同一個 OCI 目標。
Docker 初學者的閱讀順序與實作路線,依序理解 container、image、Dockerfile,再完成第一個 nginx 與 Node.js image。
Docker container、image 與 VM 的差異,以及容器化為什麼能讓開發環境更一致。
用 nginx 練習 docker run、port publishing、bind mount 與 container 生命週期。
Docker image 的唯讀分層、tag 與 digest,以及 pull、build、inspect、rm 常用指令。
Dockerfile 常用指令、Node.js 範例、build cache 與避免把不必要檔案打進 image 的做法。
從 Docker daemon、socket 與 user namespace 的權限邊界,說明正式環境採用 Rootless Docker 的價值、限制,以及如何用 skill-rootless-docker 安全完成盤點、安裝、遷移與驗證。
從 daemon、API socket、user namespace、網路、cgroup、storage 與 systemd,比較 Rootless Podman 和 Rootless Docker 在正式環境的共同限制與關鍵差異。
用一套可重現的 FastAPI lab 拆解 Docker build context、layer 與 cache key,重現只改一行程式卻重新安裝所有 dependencies 的情況,並示範如何找出第一個失效步驟。
承接 Dockerfile cache 實驗,用同一套 FastAPI lab 實作 multi-stage、lockfile-first、BuildKit cache mount 與 non-root runtime,並比較 Debian slim、Alpine、distroless 的大小、相容性與操作邊界。