FR-193 · 需求索引 · 本頁由 build 掃資料夾生成

FR-193 Docker rootless

Agent 被掃主機的 Docker 引擎改以專用帳號 guidant 非 root 執行(Docker 官方 Rootless mode);程式碼與 image 不動,改動全在安裝程式與主機六項 OS 設定。主系統後續開 FR-193.1。

狀態:📋 已開卡 文件 7 份 handoff 2 份
§1

🔴 先看哪一份

文件 性質 看什麼
handoff/fr193-STATE.md 交接(現況) 接手先看這份:此刻做到哪、哪件事做到一半、192 與 188 的狀態、下一步
design-v1.4.md 設計(現行定稿) Agent 這輪做什麼、七項決策、十張卡六批、驗收
evidence/agent-rootless-probe.md 證據 A0 在乾淨 Ubuntu 24.04 的實測:壞掉清單、十二項、ping 與 traceroute
discussion.md 需求與討論 為什麼做、客戶會感覺到什麼、主系統那部分的範圍
Agent 主機 rootless 安裝手冊(Claude Docs) 操作手冊 給客戶 IT 的逐步手冊;FR-193 做完後大半由 install.sh 自動做
handoff/cards.py 工具 拆卡表的單一來源,改卡先改它、跑斷言
§2

結論

決策者 2026-11-10 改判 FR-180「不做 rootless」:要做,走 Docker 官方 Rootless mode,不用 userns-remap。Agent 先出安裝包、主系統後續。D1 主系統對外一律 8443(PM 裁,產品未出貨無相容成本);D2 ping sysctl 全開;D3 網路驅動用預設 slirp4netns;D4 出貨包連 Docker Engine 本體一起包。程式碼與 image 不動,改動全在安裝程式。

§3

📊 總進度

棒 卡 做什麼 狀態
A0 CM-3805 乾淨機手動踩坑,列出 19 條壞掉清單 ✅
A1、A2 CM-3806、CM-3807 主機準備層、出貨包帶 Docker ✅ 驗收通過待確認
A3 CM-3808 Docker 指到 guidant、維運程式改讀主機副本 ✅ 驗收通過待確認
A4 CM-3809 合併卡:擁有者換算+升級單元+ping 與移除還原(原 A4+A5+A6) ✅ 驗收通過待確認
A7、A8 CM-3812、CM-3813 手冊、資安報告 ✅ 驗收通過待確認
A10 CM-3865 部署/演練/健康檢查腳本跟上 rootless ✅ 首腦親手做完
— — 真包首裝後的修正(離線裝 Docker、升級驗章、出包檢查、uninstall 還原) ✅ 六個都已修已推;待打進同一顆包重驗
A9 CM-3814 出貨包總驗(要決策者先出測試包) ⬜
§4

需求討論紀錄

  • 2026-11-10 決策者問「本體跟 Agent 都改 rootless 了嗎、port 要改 8443?」→ 盤點後說明 FR-180 只做容器層非 root、引擎仍 root;8443 只在 rootless 才成問題。
  • 2026-11-10 決策者裁「要做 rootless,遵照正常模式完整做,PM 不接受旁門左道」→ userns-remap 排除。
  • 2026-11-10 決策者指出「ping 不一定要 root」→ 首腦查官方文件修正:真因是 Debian 預設 ping_group_range=1 0,官方修法 sysctl 放寬;NET_RAW 在 rootless 下 cap_add 無效但 ping 不需要它。
  • 2026-11-10 決策者裁 D4 連 Docker 一起包、D1 暫定路三、D2 D3 選預設;Agent 先出安裝包、主系統晚一點。
  • 2026-11-10 PM 裁 D1 改為一律 8443(還沒出給客戶,改預設沒差)→ 開 design-v1.1,v1.0 凍結。
  • 2026-11-10 決策者裁「先開 Agent 的就好」→ 分兩張母卡,Agent 母卡 CM-3804 子卡 CM-3805~CM-3814 建完等派;主系統 FR-193.1 等 Agent 批 3 後補 design 再開。
  • 2026-11-10 決策者問「Ubuntu 內建 docker.io 會不會移除」→ 抓到 v1.1 三段式漏洞,補 D8 四段式(無容器無 volume 就換官方組,有就停下)→ 開 design-v1.2。
  • 2026-11-11 A0 實測推翻設計三處(docker 呼叫方式、uid 換算公式、NET_RAW)→ 開 design-v1.3(D9~D11),九張卡卡尾補修正段,批從六變七。決策者點名前兩天的卡常中斷、做太多:A1~A6 改成在 VM 換檔驗不出包,A5 不接主系統,A9 測試包由決策者出。
  • 2026-11-11 決策者問「為什麼不是全部開發完再測、後面每張都要再裝一回?」→ A4/A5/A6 合成一張(CM-3809),寫完只裝一次機;CM-3810、CM-3811 改暫緩不做。設計開 v1.4(只改拆卡)。
  • 2026-11-10 晚:合回工作坊 branch、188 出測試包、192 真包首裝。首裝第一步就失敗(包內 systemd-container 與主機 systemd 版號對不上),之後逐一驗 16 個維運指令,另抓到升級驗章與 uninstall 還原兩個 rootless 造成的問題。決策者裁:切換帳號不用 machinectl、包內不帶 systemd 一組;指令改名另開 CM-3867;console-login 另開 CM-3868。交接見 handoff/fr193-STATE.md。
§5

文件

以下全部由 build 掃資料夾產生,新增檔案重 build 即自動出現。標題連結指向渲染後的 HTML,md 連向源檔。

需求與討論

文件 類型 標題 最後更新
discussion / md 需求討論稿 Docker 引擎改以非 root 帳號執行 2026-11-10

設計

文件 類型 標題 最後更新
design-v1.1 / md 設計 Agent 主機改 rootless Docker 2026-11-10
design-v1.2 / md 設計 Agent 主機改 rootless Docker 2026-11-10
design-v1.3 / md 設計 Agent 主機改 rootless Docker 2026-11-10
design-v1.4 / md 設計 Agent 主機改 rootless Docker 2026-11-10
design / md 設計 Agent 主機改 rootless Docker 2026-11-10

evidence/(1 份)

證據與盤點

文件 類型 標題 最後更新
agent-rootless-probe / md 文件 FR-193.A0 乾淨機手動跑 rootless:壞掉清單與實測(CM-3805) 2026-11-10

交接與收口時間軸(handoff/,2 份)

由新到舊。每份是某一棒次交接當下的完整現況快照,看某個時間點「當時知道什麼」請從這裡進。

日期 文件 標題
2026-11-10 fr193-STATE / md FR-193 現況
2026-11-10 fr193-LOG / md FR-193 紀錄
§6

Notion 卡

卡片內容(決策紀錄、驗收條件)以 Notion 為準,本頁只記座標。

關係 卡號 標題 狀態
母案 CM-3804 FR-193 母案(Agent 先行) —
子卡 CM-3805 FR-193.A0(批 1) Not started
子卡 CM-3806 FR-193.A1(批 2) Not started
子卡 CM-3807 FR-193.A2(批 2) Not started
子卡 CM-3808 FR-193.A3(批 3) Not started
子卡 CM-3809 FR-193.A4(批 3) Not started
子卡 CM-3810 FR-193.A5(批 4) Not started
子卡 CM-3811 FR-193.A6(批 4) Not started
子卡 CM-3812 FR-193.A7(批 5) Not started
子卡 CM-3813 FR-193.A8(批 5) Not started
子卡 CM-3814 FR-193.A9(批 6) Not started