<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="ROS简单Container教程">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2025-03-01 12:59<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
ROS简单Container教程


容器Container是MikroTik RouterOS对Linux Docker的实现，允许用户在RouterOS中运行Docker。Container是在 RouterOS v7.4beta4中开始支持的（其实之前RC版本也支持过）。可以说RouterOS V7版本开始用Container替代了原来的KVM比较合适，目前RouterOS V7不支持KVM了。


一、环境准备


1、RouterOS V7.6


2、AdGuard Home Docker镜像


二、RouterOS Container Package安装


1、把container-7.6的包上传到ROS的Files，重启安装


三、RouerOS Device-Mode设置


ROS新增了Device-mode，默认情况下是限制container使用。Device-mode是一种对设备功能限制属性，即限制对特定功能配置的访问。有两种模式: enterprise和home（企业模式和家庭模式），所有设备默认都使用enterprise。目前Winbox无法管理，只能使用命令。


如果直接使用container会报错，报错提示&rdquo;Couldn't add Container - not allowed by device-mode (6)&ldquo;


1、查看当前Device-Mode




XML/HTML代码


    /system/device-mode/ print







2、当在enterprise模式下，启用container模式




XML/HTML代码


    /system/device-mode/ update container=yes







3、重启设备（这步要非常注意）


说明：需要在5分钟内，拔插电源重启设备（远程重启无效）或者按设备的reset按钮确认执行container模式，设备会重启生效进入container模式。如果在规定的时间内没有关机或按下reset按钮，则取消模式切换。如果同时运行另一个更新命令，则两个更新命令都将被取消。


目前这部最好的操作就是看到这个提示，什么也不要操作，拔电源重启（虚拟机直接在外部关机重启）即可


四、网络设置


情况1：如果当前有Briage，可以进行以下操作。设置container网卡的ip和网关（根据需求设置），然后在把veth1加入到当前bridge1。


XML/HTML代码


    /interface/veth/add name=veth1 address=172.16.0.2/24 gateway=172.16.0.1

    /interface/bridge/port add bridge=bridge1 interface=veth1





情况2：如果当前没有Briage，那么就需要创建Briage，并设置局域网IP


XML/HTML代码


    /interface/bridge/add name=docker

    /ip/address/add address=172.16.0.1/24 interface=docker





然后设置container网卡ip和网关，再加入到bridge


XML/HTML代码


    /interface/veth/add name=veth1 address=172.16.0.2/24 gateway=172.16.0.1

    /interface/bridge/port add bridge=docker interface=veth1





最后设置NAT以及端口转发


XML/HTML代码


    /ip/firewall/nat/add chain=srcnat action=masquerade

    /ip firewall/nat/add action=dst-nat chain=dstnat dst-port=3000 protocol=tcp to-addresses=172.16.0.2 to-ports=3000





五、外部镜像安装AdGuardHome


1、Container设置Docker镜像地址和目录


XML/HTML代码


    /container/config/set registry-url=https://registry-1.docker.io tmpdir=container





2、创建AdGuardHome




XML/HTML代码


    /container/add remote-image=adguard/adguardhome:latest interface=veth1 root-dir=container/adgurdhome logging=yes







3、等到Status变成Stopped，然后就可以启动了。


XML/HTML代码


    /container/print

    /container/start 1





4、通过web地址，可以访问了。


六、上传镜像安装AdGuardHome


当然ROS也提供了离线上传镜像安装的方式


1、从其他Docker上导出镜像


XML/HTML代码


    docker save adguard/adguardhome &gt; adguardhome.tar





2、上传adguardhome.tar到ROS Files


3、创建AdGuardHome


XML/HTML代码


    /container/add file=adguardhome.tar interface=veth1 root-dir=container/adgurdhome logging=yes





4、选中，点击Start运行，同时可以通过Log查看日志


七、结尾


目前在Winbox中的file目录下无法看到container的配置文件，只能通过FTP去查看。


注意：因为Docker官方镜像被墙无法正常拉取，可以设置科学或者命令导出或者通过其他方式导出，然后上传ROS使用，如果通过web或者winbox添加镜像，可以直接选择tar包。另外ROS的容器为非标准docker，命令可能不通用，活学活用设置CMD参数，也可以实现需要的功能。


官方文档  参考1  参考2  参考3  参考4  参考5


附：ROS常用设置设置命令




修改用户密码


[admin@MikroTik]&gt;/user                                                #进入操作路径


[admin@MikroTik]/user&gt;print                                          #显示RouterOS用户


[admin@MikroTik]/user&gt;set admin password=123456        #修改admin用户密码为123456


[admin@MikroTik] /user&gt; /                                              #返回根目录


在当前用户下修改密码


[admin@MikroTik]&gt;password                                           #修改本目录用户密码


备份命令


[admin@MikroTik]&gt;/system backup                                   #进入操作路径


[admin@MikroTik] /system backup&gt;save dont-encrypt=yes name=test         #备份名为test（不加密）


[admin@MikroTik] /system backup&gt;load name=test.backup   #载入备份test.backup


[admin@MikroTik]&gt;file print                                                #查看备份情况


导出指令


[admin@MikroTik]&gt;ip address print                                     #查看IP


[admin@MikroTik]&gt;/ip address                                           #进入IP操作路径


[admin@MikroTik]/ip address&gt;export file=address                #导出一个名为address的IP地址配置参数


[admin@MikroTik]&gt;export compact                                     #查看IP地址配置参数


[admin@MikroTik]&gt;export                                                  #查看详细设置命令


[admin@MikroTik]&gt;export file bak                                       #导出系统配置命令


[admin@MikroTik]&gt;ip export file ip                                      #导出ip配置命令


注意：system backup是全部参数备份，export是导出部分参数，如密码之类看不到也无法备份还原。


系统重启与关机


[admin@MikroTik]&gt;system reboot                                        #系统重启


[admin@MikroTik]&gt;system shutdown                                   #系统关机


修改RouterOS主机名


[admin@MikroTik]&gt;system identity print                               #查看RouterOS主机名


[admin@MikroTik]&gt;system identity set name=MyRouterOS    #修改RouterOS主机名为MyRouterOS


系统资源管理


[admin@MikroTik] &gt; /system resource                                 #操作路径


[admin@MikroTik] /system resource&gt; print                           #查看CPU占用率\内存\硬


盘等使用情况


[admin@MikroTik] /system resource&gt; monitor                      #查看CPU和空闲内存使用情况


开通ssh远程


[admin@MikroTik] &gt; ip service print                                     #查看服务


[admin@MikroTik] &gt; ip service enable ssh                            #开启SSH服务


[admin@MikroTik] &gt; ip service disable ssh                            #关闭SSH服务


[admin@MikroTik] &gt; ip service set ssh port=22 address=10.8.9.11   #允许10.8.9.11访问SSH访问，其它IP都均被拒绝


Interface接口基本操作


[admin@MikroTik] &gt; interface print                                     #显示接口状态


[admin@MikroTik] &gt; interface enable ether1                        #启动ether1网卡


[admin@MikroTik] &gt; interface print stats                             #显示接口状态+静态流量


[admin@MikroTik] &gt; interface monitor-traffic ether1              #监测网卡动态流量


[admin@MikroTik] &gt; interface ethernet print detail                #显示网卡参数


IP配置与ARP


[admin@MikroTik] &gt; ip address add address=192.168.10.1/24 interface=ether2   #添加IP地址到ether2接口上


[admin@MikroTik] &gt; ip address print                                    #显示IP地址


[admin@MikroTik] &gt; ip arp print                                           #显示arp信息


[admin@MikroTik] &gt; ip arp add address=192.168.10.100 interface=00:23:24:2e:78:3e   #添加静态IP与ARP


[admin@MikroTik] &gt;/interface ethernet set ether2 arp=reply-only  #设置ether2接口非静态的ARP条目将无法与路由进行通信


防火墙过滤(firewall Filte)----域名过滤


[admin@MikroTik]&gt;ip firewall filter add action=drop chain=forward content=www.jd.com


防火墙过滤(firewall Filte)----端口映射将内网主机192.168.10.200的3389端口映射到外网的9999端口


[admin@MikroTik] &gt; ip firewall nat add chain=dstnat protocol=tcp dst-port=9999 in-interface=WAN action=dst-nat to-addresses=192.168.10.200 to-ports=3389




##设置NAT转发


[admin@MikroTik] &gt; ip firewall nat  add action=masquerade chain=srcnat


##设置NAT1


[admin@MikroTik] &gt; ip firewall nat  add action=endpoint-independent-nat chain=dstnat protocol=udp randomise-ports=no


[admin@MikroTik] &gt; ip firewall nat  add action=endpoint-independent-nat chain=srcnat protocol=udp randomise-ports=no




</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
