用途:在 RouterOS 7.x 上通过 /container 子系统直接运行 OCI 兼容容器镜像,属于 MikroTik 自有实现,与 Docker 有显著差异。
要求:RouterOS 7.x 且安装 container 扩展包;启用 device-mode(需物理接触);存储充足(建议外置 USB 盘,100+ MB/s、10K+ 随机 IOPS);架构为 ARM、ARM64 或 x86,不支持 MIPS。
device-mode:需物理确认(按复位键或断电重启)后生效。启用命令:/system/device-mode/update mode=advanced container=yes,执行后在超时内物理确认。7.22+ 可通过 netinstall 的 mode 脚本(-sm)在首次启动设置。
安装容器包:检查 /system/package/print where name=container;可上传 .npk 后执行 /system/package/apply-changes(7.18+ 必须用它,普通 /system/reboot 会丢弃上传包;<7.18 用 reboot),或在线 /system/package/update check-for-updates 与 install。
网络:通过 VETH 连接,创建 /interface/veth/add name=veth-myapp address=172.17.0.2/24 gateway=172.17.0.1,VETH 名即容器接口名(7.21+);用 bridge 聚合 VETH 并分配网关 IP;用 NAT masquerade 提供外网访问,dst-nat 做端口转发。需要二层访问时,将物理端口与 VETH 加入同一 bridge。
环境变量与挂载:7.21+ 可在 /container/add 上直接使用 env= 与 mount=(内联,推荐);也可用命名列表 /container/envs/add 与 /container/mounts/add,通过 envlists=、mountlists= 引用(属性名随版本变化,7.20 前无分组)。卷建议放外置磁盘。
镜像:支持从 registry 拉取(remote-image=)或导入本地 tar(file=),本地 tar 要求单层、无 gzip 压缩、Docker v1 manifest。
生命周期与限制:/container/add、start、stop、print、remove(须先完全停止);REST API 中 .running 为字符串 "true"/"false",无 .stopped 字段,停止中删除会返回 HTTP 400,需轮询。架构映射:arm→linux/arm/v7,arm64→linux/arm64,x86→linux/amd64。7.21+ 提供 /app 系统,7.22+ 支持 YAML 应用;需要二层访问(如 netinstall)时用手动 VETH+bridge,一般端口转发场景用 /app 更简单。