技能 routeros-container
📦

routeros-container

安全

管理 MikroTik RouterOS 上的容器

在 MikroTik RouterOS 上運行容器需要了解其自訂的 OCI 實作方式,這與標準 Docker 有顯著差異。本技能提供在 RouterOS 裝置上進行容器設定、網路配置、映像檔管理及生命週期操作的逐步指引。

支援: Claude Codex Code(CC)
🥉 73 青銅
1

下載技能 ZIP

2

在 Claude 中上傳

前往 設定 → 功能 → 技能 → 上傳技能

3

開啟並開始使用

測試它

正在使用「routeros-container」。 為容器建立具有 IP 172.17.0.2 的 VETH 介面和橋接

預期結果:

1. 建立 VETH 配對: /interface/veth/add name=veth-myapp address=172.17.0.2/24 gateway=172.17.0.1
2. 建立橋接: /interface/bridge/add name=containers
3. 將 VETH 加入橋接: /interface/bridge/port/add bridge=containers interface=veth-myapp
4. 指派閘道 IP: /ip/address/add address=172.17.0.1/24 interface=containers

正在使用「routeros-container」。 啟動名為 myapp 的容器並檢查其狀態

預期結果:

1. 啟動: /container/start [find tag~"myapp"]
2. 檢查狀態: /container/print
3. 查看日誌: /log/print where topics~"container"
4. 對於 REST API: GET /rest/container 會傳回容器清單,其中 .running 欄位為字串 "true"/"false"

安全審計

安全
v2 • 4/16/2026

This skill is a Markdown documentation file providing instructions and examples for the MikroTik RouterOS /container subsystem. The static scanner flagged 171 patterns, but all are false positives. The 'external_commands' detections match RouterOS CLI syntax inside Markdown code fences, not actual shell execution. The 'network' detections reference example URLs and IPs in documentation snippets. The 'weak cryptographic algorithm' and 'path traversal' findings have no basis in the content. No executable code exists in this file - it is purely instructional documentation for network administrators.

1
已掃描檔案
348
分析行數
0
發現項
2
審計總數
未發現安全問題
審計者: claude 查看審計歷史 →

品質評分

38
架構
100
可維護性
87
內容
33
社群
100
安全
100
規範符合性

你能建構什麼

在 RouterOS 容器中部署 Pi-hole

設定具有 VETH 網路的 Pi-hole 廣告封鎖容器,在外接磁碟上進行持續性儲存,並為網頁介面密碼設定適當的環境變數。

透過 L2 橋接容器執行 netinstall 服務

設定具有第二層橋接存取權的容器,以在同一網路區段上為實體裝置提供 BOOTP/TFTP netinstall 服務。

透過 REST API 自動化容器管理

使用 RouterOS REST API 以程式方式列出、啟動、停止和刪除容器,並正確輪詢非同步作業。

試試這些提示

初學者:在我的路由器上啟用容器
我的路由器執行的是 RouterOS 7.x。請幫我啟用容器子系統並設定基本的 VETH 網路,以便能夠執行我的第一個容器。
中級:從 Docker Hub 下載並執行容器
我想在我的 RouterOS 裝置上從 Docker Hub 下載 Alpine 容器,為其指派 IP 為 172.17.0.2 的 VETH 介面,並設定環境變數。請逐步引導我完成這些步驟。
進階:建置並匯入自訂單層映像檔
我需要為 RouterOS 建置符合其需求的自訂 OCI 映像檔:單一層、無 gzip 壓縮、Docker v1 資訊清單格式。然後將其匯入為 tar 檔案,並設定內聯環境變數和掛載。
專家:REST API 容器生命週期自動化
撰寫一個 TypeScript 指令碼,使用 RouterOS REST API 列出容器、按 ID 啟動其中一個、檢查其執行狀態(考量字串布林值),並使用適當的重試邏輯執行停止後刪除的順序來刪除它。

最佳實務

  • 務必將容器磁碟區放在外接磁碟儲存上,切勿放在內部快閃儲存上
  • 在 RouterOS 7.21+ 上使用內聯 env= 和 mount= 屬性,以獲得更簡潔的自我封裝容器定義
  • 使用 REST API 時,請記住 .running 欄位傳回的是字串 "true"/"false",而非布林值,且刪除前需要先完全停止容器

避免

  • 在 RouterOS 7.18+ 上使用 /system/reboot 而非 /system/package/apply-changes,這會丟棄已上傳的套件
  • 嘗試執行多層或 gzip 壓縮的 tar 映像檔,RouterOS 無法載入此類映像檔
  • 在需要第二層橋接存取時嘗試使用 /app YAML 系統,例如 netinstall 的情況

常見問題

我需要哪個 RouterOS 版本才能支援容器?
需要 RouterOS 7.x 且已安裝容器附加套件。容器功能因版本而異,7.20 和 7.21 之間在環境變數和掛載語法上有重大變更。
為什麼 RouterOS 需要裝置模式才能使用容器?
裝置模式是 RouterOS 的一項安全功能,可控制多項功能(包括容器)的存取。它需要透過重置按鈕或電源循環進行實體確認,以防止遠端啟用。
我可以在 RouterOS 上使用標準 Docker 映像檔嗎?
直接支援從 Docker Hub 登錄庫下載。本地 tar 匯入必須是單一層、未壓縮,且使用 Docker v1 資訊清單格式。不支援多層和 gzip 壓縮的映像檔。
內聯和命名 env/mount 設定之間有何差異?
內聯(在 /container/add 上使用 env= 和 mount=)是 7.21+ 的現代方法,可保持容器的自我封裝。命名清單需要個別的 /container/envs/add 和 /container/mounts/add 物件,適用於更多版本。
如何以程式方式管理容器?
使用 RouterOS REST API,位於 /rest/container。主要端點包括用於列舉的 GET、用於 /container/start 或 /container/stop 的 POST,以及用於刪除的 DELETE。.running 欄位是字串而非布林值。
何時應該使用 /app YAML 而非手動容器設定?
在標準部署且需要連接埠轉送時使用 /app YAML(RouterOS 7.22+)。在需要第二層存取(例如 netinstall、DHCP 中繼或直接網路存取)時,使用手動 VETH/橋接設定。

開發者詳情

檔案結構

📄 SKILL.md