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会报错,报错提示”Couldn't add Container - not allowed by device-mode (6)“
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 > 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参数,也可以实现需要的功能。
附:ROS常用设置设置命令
修改用户密码
[admin@MikroTik]>/user #进入操作路径
[admin@MikroTik]/user>print #显示RouterOS用户
[admin@MikroTik]/user>set admin password=123456 #修改admin用户密码为123456
[admin@MikroTik] /user> / #返回根目录
在当前用户下修改密码
[admin@MikroTik]>password #修改本目录用户密码
备份命令
[admin@MikroTik]>/system backup #进入操作路径
[admin@MikroTik] /system backup>save dont-encrypt=yes name=test #备份名为test(不加密)
[admin@MikroTik] /system backup>load name=test.backup #载入备份test.backup
[admin@MikroTik]>file print #查看备份情况
导出指令
[admin@MikroTik]>ip address print #查看IP
[admin@MikroTik]>/ip address #进入IP操作路径
[admin@MikroTik]/ip address>export file=address #导出一个名为address的IP地址配置参数
[admin@MikroTik]>export compact #查看IP地址配置参数
[admin@MikroTik]>export #查看详细设置命令
[admin@MikroTik]>export file bak #导出系统配置命令
[admin@MikroTik]>ip export file ip #导出ip配置命令
注意:system backup是全部参数备份,export是导出部分参数,如密码之类看不到也无法备份还原。
系统重启与关机
[admin@MikroTik]>system reboot #系统重启
[admin@MikroTik]>system shutdown #系统关机
修改RouterOS主机名
[admin@MikroTik]>system identity print #查看RouterOS主机名
[admin@MikroTik]>system identity set name=MyRouterOS #修改RouterOS主机名为MyRouterOS
系统资源管理
[admin@MikroTik] > /system resource #操作路径
[admin@MikroTik] /system resource> print #查看CPU占用率\内存\硬
盘等使用情况
[admin@MikroTik] /system resource> monitor #查看CPU和空闲内存使用情况
开通ssh远程
[admin@MikroTik] > ip service print #查看服务
[admin@MikroTik] > ip service enable ssh #开启SSH服务
[admin@MikroTik] > ip service disable ssh #关闭SSH服务
[admin@MikroTik] > ip service set ssh port=22 address=10.8.9.11 #允许10.8.9.11访问SSH访问,其它IP都均被拒绝
Interface接口基本操作
[admin@MikroTik] > interface print #显示接口状态
[admin@MikroTik] > interface enable ether1 #启动ether1网卡
[admin@MikroTik] > interface print stats #显示接口状态+静态流量
[admin@MikroTik] > interface monitor-traffic ether1 #监测网卡动态流量
[admin@MikroTik] > interface ethernet print detail #显示网卡参数
IP配置与ARP
[admin@MikroTik] > ip address add address=192.168.10.1/24 interface=ether2 #添加IP地址到ether2接口上
[admin@MikroTik] > ip address print #显示IP地址
[admin@MikroTik] > ip arp print #显示arp信息
[admin@MikroTik] > ip arp add address=192.168.10.100 interface=00:23:24:2e:78:3e #添加静态IP与ARP
[admin@MikroTik] >/interface ethernet set ether2 arp=reply-only #设置ether2接口非静态的ARP条目将无法与路由进行通信
防火墙过滤(firewall Filte)----域名过滤
[admin@MikroTik]>ip firewall filter add action=drop chain=forward content=www.jd.com
防火墙过滤(firewall Filte)----端口映射将内网主机192.168.10.200的3389端口映射到外网的9999端口
[admin@MikroTik] > 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] > ip firewall nat add action=masquerade chain=srcnat
##设置NAT1
[admin@MikroTik] > ip firewall nat add action=endpoint-independent-nat chain=dstnat protocol=udp randomise-ports=no
[admin@MikroTik] > ip firewall nat add action=endpoint-independent-nat chain=srcnat protocol=udp randomise-ports=no