技能 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

设置一个 Pi-hole 广告拦截容器,配置 VETH 网络、外部磁盘持久化存储,以及 Web 界面密码的正确环境变量。

通过 L2 桥接容器运行 netinstall 服务

配置具有二层桥接访问权限的容器,以在与物理设备相同的网络段上提供 BOOTP/TFTP netinstall 服务。

通过 REST API 自动化容器管理

使用 RouterOS REST API 以编程方式列出、启动、停止和删除容器,并对异步操作进行正确的轮询处理。

试试这些提示

入门级:在我的路由器上启用容器
我有一台运行 RouterOS 7.x 的 MikroTik 路由器。请帮我启用容器子系统并设置基本的 VETH 网络,以便运行我的第一个容器。
进阶级:从 Docker Hub 拉取并运行容器
我想在 RouterOS 设备上从 Docker Hub 拉取一个 Alpine 容器,为其分配 IP 为 172.17.0.2 的 VETH 接口,并设置环境变量。请逐步指导我完成。
高级:构建和导入自定义单层镜像
我需要为 RouterOS 构建一个符合其要求的自定义 OCI 镜像:单层、无 gzip 压缩、Docker v1 manifest 格式。然后将其作为 tar 文件导入,并配置内联环境变量和挂载。
专家级:REST API 容器生命周期自动化
编写一个 TypeScript 脚本,使用 RouterOS REST API 来列出容器、按 ID 启动一个容器、检查其运行状态(注意字符串布尔值),并在停止后删除操作中实现正确的重试逻辑。

最佳实践

  • 始终将容器卷放在外部磁盘存储上,不要放在内部闪存存储上
  • 在 RouterOS 7.21+ 上使用 env= 和 mount= 内联属性,以创建更简单的自包含容器定义
  • 使用 REST API 时,请记住 .running 字段返回的是字符串 "true"/"false",而非布尔值,并且 DELETE 操作要求容器先完全停止

避免

  • 在 RouterOS 7.18+ 上使用 /system/reboot 而不是 /system/package/apply-changes,这会导致已上传的软件包被丢弃
  • 尝试运行 RouterOS 无法加载的多层或 gzip 压缩的 tar 镜像
  • 在需要二层桥接访问(如 netinstall)时尝试使用 /app YAML 系统

常见问题

容器支持需要哪个 RouterOS 版本?
需要安装 container 额外软件包的 RouterOS 7.x。容器功能因版本而异,7.20 和 7.21 之间在环境变量和挂载语法方面有重大变化。
为什么 RouterOS 的容器需要设备模式?
设备模式是 RouterOS 的一项安全功能,用于控制包括容器在内的多项功能。它需要通过复位按钮或电源循环进行物理确认,以防止远程激活。
我可以在 RouterOS 上使用标准 Docker 镜像吗?
从 Docker Hub 拉取可以直接使用。本地 tar 导入必须是单层、未压缩的,并使用 Docker v1 manifest 格式。不支持多层和 gzip 压缩的镜像。
内联和命名的 env/mount 配置有什么区别?
内联方式(在 /container/add 上使用 env= 和 mount=)是 7.21+ 的现代方法,使容器保持自包含。命名列表需要单独的 /container/envs/add 和 /container/mounts/add 对象,可在更多版本中使用。
如何以编程方式管理容器?
使用 RouterOS REST API 的 /rest/container 端点。关键端点包括:GET 用于列出,POST 到 /container/start 或 /container/stop,DELETE 用于删除。.running 字段是字符串而非布尔值。
什么时候应该使用 /app YAML 而不是手动容器设置?
使用 /app YAML(RouterOS 7.22+)进行带有端口转发的标准部署。当需要二层访问(如 netinstall、DHCP 中继或直接网络访问)时,使用手动 VETH/桥接设置。

开发者详情

文件结构

📄 SKILL.md