容器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

[admin@MikroTik] > /system/device-mode/ print

 

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

[admin@MikroTik] > /system/device-mode/ update container=yes

 

3、重启设备(这步要非常注意)

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

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

四、网络设置

情况1:如果当前有Briage,可以进行以下操作。设置container网卡的ip和网关(根据需求设置),然后在把veth1加入到当前bridge1。

[admin@MikroTik] > /interface/veth/add name=veth1 address=172.16.0.2/24 gateway=172.16.0.1
[admin@MikroTik] > /interface/bridge/port add bridge=bridge1 interface=veth1

情况2:如果当前没有Briage,那么就需要创建Briage,并设置局域网IP

 

[admin@MikroTik] > /interface/bridge/add name=docker
[admin@MikroTik] > /ip/address/add address=172.16.0.1/24 interface=docker

 

然后设置container网卡ip和网关,再加入到bridge

 

[admin@MikroTik] > /interface/veth/add name=veth1 address=172.16.0.2/24 gateway=172.16.0.1
[admin@MikroTik] > /interface/bridge/port add bridge=docker interface=veth1

 

最后设置NAT以及端口转发

 

[admin@MikroTik] > /ip/firewall/nat/add chain=srcnat action=masquerade
[admin@MikroTik] > /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镜像地址和目录

 

[admin@MikroTik] > /container/config/set registry-url=https://registry-1.docker.io tmpdir=container

 

2、创建AdGuardHome

 

[admin@MikroTik] > /container/add remote-image=adguard/adguardhome:latest interface=veth1 root-dir=container/adgurdhome logging=yes

 

3、等到Status变成Stopped,然后就可以启动了。

 

[admin@MikroTik] > /container/print
[admin@MikroTik] > /container/start 1

 

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

六、上传镜像安装AdGuardHome

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

1、从其他Docker上导出镜像

 

root@debian:/home/staryu# docker save adguard/adguardhome > adguardhome.tar

 

2、上传adguardhome.tar到ROS Files

3、创建AdGuardHome

 

[admin@MikroTik] > /container/add file=adguardhome.tar interface=veth1 root-dir=container/adgurdhome logging=yes

 

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

七、结尾

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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。